Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 361
от 29.11.2006, 13:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 308, Экспертов: 47
В номере:Вопросов: 6, Ответов: 12


Вопрос № 63881: Уважаемые эксперты, нужны ваши советы и помощь! 7.7-Торговля и склад. Надо срочно перенести остатки товаров с ценами "по средней" из одной базы в другую. "Документы - Склады - Оприходование ТМЦ" не подходит, т.к. база довольно бол...
Вопрос № 63902: Здравуствуйте! Уважаемые эксперты, подскажите пожалуйста мне в очередной раз. Пишу обработку по удалению нулевых значений в истории (Номенклатура.Себестоимость). Как в приложении работает, но как видно, сделано только для конкретного наименования...
Вопрос № 63911: Привет экспертам! Опять нужна ваша помощь.Целый вечер ломаю голову как перенести в текстовый файл данные из таблицы, которая формируется при печати. Делаю я это для того, чтобы ускорить печать документов на матричный принтер путем засовывания этого т...
Вопрос № 63952: Здравствуйте. Есть многоуровневый справочник Контрагенты. Как определить, по каждому элементу этого справочника, используется ли он - где то задействован в документах или операциях и если нет, то удалить. Если делать просто - пометить все на удаления...
Вопрос № 63976: Здравствуйте. 1C 8.0.13.32 В форме элемента справочника есть поле ввода Область при выполнении строки ЭтаФорма.ЭлементыФормы.Область.Доступность(Ложь); выводит ошибку {Справочник.Организации.Форма.ФормаЭлемента(3)}: ...
Вопрос № 63988: В догонку к Вопросу № 63.145: Мне удалось развернутьт сервер терминалов на ХР Professional(воспользовавшись ссылкой http://martin-martin.narod.ru/xpterminal.html). Но вот теперь проблема.В 1С у меня к базе на СОМ1 подключен сканер штрих-кода....

Вопрос № 63.881
Уважаемые эксперты, нужны ваши советы и помощь! 7.7-Торговля и склад. Надо срочно перенести остатки товаров с ценами "по средней" из одной базы в другую. "Документы - Склады - Оприходование ТМЦ" не подходит, т.к. база довольно большая. Подскажите, пожалуйста, наиболее простой и быстрый способ. Спасибо за любую подсказку (не говоря уж о готовой обработке!)
Отправлен: 23.11.2006, 16:02
Вопрос задал: V2006 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Игорь К.
Здравствуйте, V2006!

1 вариант - писать обработку выгрузки в .mxl, .txt документ. и обратно загрузки.
2 вариант - тоже писать: импорт остатков через OLE.
В конфигурации "приемник" обработка через V77.Application цепляет базу "источник".

Удачи!
---------
Лучше два часа потерять, потом за пять минут долететь
Ответ отправил: Игорь К. (статус: 2-ой класс)
Ответ отправлен: 24.11.2006, 07:47


Вопрос № 63.902
Здравуствуйте! Уважаемые эксперты, подскажите пожалуйста мне в очередной раз.
Пишу обработку по удалению нулевых значений в истории (Номенклатура.Себестоимость). Как в приложении работает, но как видно, сделано только для конкретного наименования. А как мне сделать, чтобы удалялось во всём справочнике (имеет группы) или хотя бы в определенной группе. Спасибо!

Приложение:

Отправлен: 23.11.2006, 18:16
Вопрос задал: Darina (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Darina!
вСпр.НайтиПоКоду(200);
нужно заменить на
вСпр.ВыбратьЭлементы()
Пока вСпр.получитьЭлемент()=1 Цикл
ну и закрыть цикл.
Переберутся все элементы справочника, независимо от групп.
Кстати, а почему вы не трете подряд идущие дублирующиеся значения?
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Студент)
Ответ отправлен: 23.11.2006, 18:34
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Да надо будет подумать о том, что Вы написали последнее.

Отвечает: Gl0betrotter
Здравствуйте, Darina!

В Вашей обработке в строке 5 указано позиционирование на конкретном элементе. Используйте цикл…

//*******************************************
//С циклом перебора всех элементов справочника
Процедура Сформировать()
вСпр=СоздатьОбъект("Справочник.Номенклатура");
вСпр.ВыбратьЭлементы();
Пока вСпр.ПолучитьЭлемент()>0 Цикл
Тек=вСпр.ТекущийЭлемент();
Если Тек.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
вПериодический=СоздатьОбЪект("Периодический");
// Создаем периодический обЪект.
вПериодический.ИспользоватьОбъект("Себестоимость",Тек);
// Связываем обЪекты.
вПервый=1;
// Для того чтобы не потереть 1-й элемент, тк он достаточно важен, даже если и ноль.
вПериодический.ВыбратьЗначения();
// Открываем выборку значений.
Пока (вПериодический.ПолучитьЗначение()=1) Цикл
// Выбираем значение из списка.
// Не первый элемент.
Если (вПериодический.Значение=0) Тогда
// Удаляем это значение.
вПериодический.Удалить();
Иначе
вПервый=0;
// Пропускаем первое значение.
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

//*******************************************
// Если хотите анализировать элементы только определенной группы
// ВыбГруппа – наш элемент диалога
Процедура Сформировать()
вСпр=СоздатьОбъект("Справочник.Номенклатура");
вСпр.ИспользоватьРодителя(ВыбГруппа);
вСпр.ВключатьПодчиненные(1);
вСпр.ВыбратьЭлементы();
Пока вСпр.ПолучитьЭлемент()>0 Цикл
Тек=вСпр.ТекущийЭлемент();
Если Тек.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
вПериодический=СоздатьОбЪект("Периодический");
// Создаем периодический обЪект.
вПериодический.ИспользоватьОбъект("Себестоимость",Тек);
// Связываем обЪекты.
вПервый=1;
// Для того чтобы не потереть 1-й элемент, тк он достаточно важен, даже если и ноль.
вПериодический.ВыбратьЗначения();
// Открываем выборку значений.
Пока (вПериодический.ПолучитьЗначение()=1) Цикл
// Выбираем значение из списка.
// Не первый элемент.
Если (вПериодический.Значение=0) Тогда
// Удаляем это значение.
вПериодический.Удалить();
Иначе
вПервый=0;
// Пропускаем первое значение.
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
//*******************************************
// Если используете вместо элемента диалога список значений
// ВыбСписок – список значений
Процедура Сформировать()
вСпр=СоздатьОбъект("Справочник.Номенклатура");
вСпр.ВыбратьЭлементы();
Пока вСпр.ПолучитьЭлемент()>0 Цикл
Тек=вСпр.ТекущийЭлемент();
Если ВыбСписок.Принадлежит(Тек)=0 Тогда
Продолжить;
КонецЕсли;
Если Тек.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
вПериодический=СоздатьОбЪект("Периодический");
// Создаем периодический обЪект.
вПериодический.ИспользоватьОбъект("Себестоимость",Тек);
// Связываем обЪекты.
вПервый=1;
// Для того чтобы не потереть 1-й элемент, тк он достаточно важен, даже если и ноль.
вПериодический.ВыбратьЗначения();
// Открываем выборку значений.
Пока (вПериодический.ПолучитьЗначение()=1) Цикл
// Выбираем значение из списка.
// Не первый элемент.
Если (вПериодический.Значение=0) Тогда
// Удаляем это значение.
вПериодический.Удалить();
Иначе
вПервый=0;
// Пропускаем первое значение.
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Удачи!
Ответ отправил: Gl0betrotter (статус: 7-ой класс)
Ответ отправлен: 23.11.2006, 19:07
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Вы супер!

Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Darina!

Вам надо сделать так:

вПериодический=СоздатьОбЪект("Периодический");
вСпр.ВыбратьЭлементы();
Пока вСпр.ПолучитьЭлемент() = 1 Цикл

// а дальше Ваша обработка
вПериодический.ИспользоватьОбъект("Себестоимость",вСпр.ТекущийЭлемент());
// Связываем обЪекты.
вПервый=1;
// Для того чтобы не потереть 1-й элемент, тк он достаточно важен, даже если и ноль.
вПериодический.ВыбратьЗначения();
// Открываем выборку значений.
Пока (вПериодический.ПолучитьЗначение()=1) Цикл
// Выбираем значение из списка.
// Не первый элемент.
Если (вПериодический.Значение=0) Тогда
// Удаляем это значение.
вПериодический.Удалить();
Иначе
вПервый=0;
// Пропускаем первое значение.
КонецЕсли;
КонецЦикла;
// конец Вашей обработки
КонецЦикла;
Ответ отправил: Краюшкин Игорь Валерьевич (статус: 6-ой класс)
Ответ отправлен: 23.11.2006, 21:29
Оценка за ответ: 5
Комментарий оценки:
Спасибо!


Вопрос № 63.911
Привет экспертам! Опять нужна ваша помощь.Целый вечер ломаю голову как перенести в текстовый файл данные из таблицы, которая формируется при печати. Делаю я это для того, чтобы ускорить печать документов на матричный принтер путем засовывания этого текстового файла сразу в лпт порт. В принципе, у меня это настроено через шаблоны(см.прил), но по многим причинам это ужасно неудобно(длина данных каждый раз меняется и подогнать шаблон порой бывает довольно геморно).Фиксированный шаблон тоже не устраивает. Может кто нить сталкивался с такой задачей? Пробовал переносить методом Таблица.Записать-записывает коряво. Позиция данных в таблице и в файле не совпадают. Пытался получать значение ячейки методом ЗначениеТекущейЯчейки, но так и не допёр как это работает(все время пустое значение возвращало). Вобщем, я в тупике. Выручайте.

Приложение:

Отправлен: 23.11.2006, 19:33
Вопрос задал: Endru (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Elric
Здравствуйте, Endru!

На счет шаблонов -- не скажу.
А вот на счет метода ЗначениеТекущейЯчейки, то нужно использовать
Таб.Область(Стр,Кол).Текст
где Стр -- номер строки таблицы, Кол -- номер колонки.
Для теста попробуйте пример:
Сообщить(Таб.Область(1,1).Текст);
При этом в окно сообщений выведется текст из ячейки на пересечении первой строки и первой колонки таблицы.
---------
Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Практикант)
Ответ отправлен: 24.11.2006, 00:46
Оценка за ответ: 5

Отвечает: Ovr1970
Здравствуйте, Endru!
А почему не воспользоваться стандартной процедурой записи таблицы в текстовый файл?

Таб.Записать("Файл.txt",3)
Ответ отправил: Ovr1970 (статус: Студент)
Ответ отправлен: 24.11.2006, 11:24
Оценка за ответ: 4
Комментарий оценки:
Я же писал что этот метод записывает как попало. Вобщем, данные в разброс. Не пойдет!


Вопрос № 63.952
Здравствуйте. Есть многоуровневый справочник Контрагенты. Как определить, по каждому элементу этого справочника, используется ли он - где то задействован в документах или операциях и если нет, то удалить. Если делать просто - пометить все на удаления а потом провести действие "Удаление помеченных объектов" - то 1с не удаляет используемые. Но так не пойдет. Т.к. Контрагены и договора не смогут удалится - т.к. используются в Субконто, а вот расчетные счета удаляются всех - т.к. они ни где не фигурируют - значит так не пойдет. Как лучше удалить не используемые элементы этого справочника
Отправлен: 24.11.2006, 04:37
Вопрос задал: Zlm (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: vcv
Здравствуйте, Zlm!

Попробуйте воспользоваться процедурой НайтиСсылки()

Приложение:

Ответ отправил: vcv (статус: 3-ий класс)
Ответ отправлен: 24.11.2006, 05:59
Оценка за ответ: 5

Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Zlm!

НайтиСсылки(<?>,);
Синтаксис:
НайтиСсылки(<Объекты>,<Ссылки>)
Назначение:
Находит ссылки на объекты, переданные в списке значений.
Параметры:
<Объекты> - конкретное значение искомого объекта или значение типа ''СписокЗначений'', в котором данной процедуре передаются объекты, по которым надо найти ссылки.
<Ссылки> - идентификатор объекта типа ''ТаблицаЗначений'', в который данная процедура помещает найденные ссылки на объекты. Таблица значений состоит из 3 колонок: 1. объект на который ссылаются; 2. объект, который содержит ссылку; 3. комментарий к ссылке.
Ответ отправил: Краюшкин Игорь Валерьевич (статус: 6-ой класс)
Ответ отправлен: 24.11.2006, 17:42
Оценка за ответ: 5

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Zlm!
Давайте мыло, скину образец обработки, которая с успехом работает. Использует НайтиСсылки(), ищет хорошо. Единственное замечание: НайтиСсылки завершает аварийно 1С с последующей переиндексацией в случае если найденных ссылок больше чем 65000. Поэтому я анализирую не всех контрагентов, а по чуть чуть.
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Студент)
Ответ отправлен: 27.11.2006, 13:14
Оценка за ответ: 5


Вопрос № 63.976
Здравствуйте.
1C 8.0.13.32
В форме элемента справочника есть поле ввода Область
при выполнении строки
ЭтаФорма.ЭлементыФормы.Область.Доступность(Ложь);

выводит ошибку

{Справочник.Организации.Форма.ФормаЭлемента(3)}: Метод объекта не обнаружен (Доступность)

Что я не так делаю. Никак понять не могу
Отправлен: 24.11.2006, 10:11
Вопрос задал: Olov11 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Шальков Павел Владимирович
Здравствуйте, Olov11!
Доступность - это не метод, а свойство, т.е ...Доступность = Ложь; Удачи!
Ответ отправил: Шальков Павел Владимирович (статус: 9-ый класс)
Ответ отправлен: 24.11.2006, 10:38

Отвечает: Махнев Даниил Анатольевич
Здравствуйте, Olov11!
Надо делать так...
ЭтаФорма.ЭлементыФорма.Область.Доступность=Истина (Ложь)
---------
Windows работает ?! Читайте внимательно инструкцию...
Ответ отправил: Махнев Даниил Анатольевич (статус: 1-ый класс)
Ответ отправлен: 24.11.2006, 10:52


Вопрос № 63.988
В догонку к Вопросу № 63.145:
Мне удалось развернутьт сервер терминалов на ХР Professional(воспользовавшись ссылкой http://martin-martin.narod.ru/xpterminal.html).
Но вот теперь проблема.В 1С у меня к базе на СОМ1 подключен сканер штрих-кода.Но при попытке подключения сканера к драйверу от Атол выдается собщение
"(-3) Порт недоступен"
В настройках сервера через gpedit.msc отключал "Не разрешать перенаправление СОМ-портов"
Пробовал в настройках клиента выставлять "Автоматически подключаться к этим устройствам при входе на удаленный компьютер" дисковые устройства и последовательные порты.
Чувствую,что где-то надо рыть в настройках.Но вот где?
Отправлен: 24.11.2006, 11:43
Вопрос задал: Sergey Timofeev (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Игорь К.
Здравствуйте, Sergey Timofeev!

Вся проблема в том, что зайдя на сервер терминалов - вы как-бы работаете от имени сервера а не зашедшей рабочей станции.
Разложим все по полочкам.
Сервер терминалов, движок 1С, база 1С находятся на машине ХР. Которая выполняет роль сервера. Далее "Сервер".
Еще есть рабочая станция с клиентом терминалов "Станция".
1. Сканер штрих-кодов подключен к "Серверу". Проблем быть не должно.
Сначала попробуйте управлять сканером с "сервера". Если получилось, то через терминал тоже пойдет.
2. Сканер штрих-кодов подключен к "Станции".
Чтобы "сервер" видел сканер на нем (сервере) должна быть учетная запись пользователя с паролем точно такие - же как на "Станции". Тогда "Сервер" будет обладать правами "Станции".

Посмотрите еще тут:
"сервер"
Пуск->выполнить
в окне tscc.msc - не уверен что такая оснастка есть на XP
"подключения->RDP-TCP->Свойства->Параметры клиента" поиграйтесь галочками
"Сопоставление COM-портов"
Удачи!
---------
Лучше два часа потерять, потом за пять минут долететь
Ответ отправил: Игорь К. (статус: 2-ой класс)
Ответ отправлен: 24.11.2006, 13:45


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное