Вопрос № 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 (статус: 3-ий класс)
Ответ отправлен: 24.11.2006, 05:59 Оценка за ответ: 5
Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Zlm!
НайтиСсылки(<?>,);
Синтаксис:
НайтиСсылки(<Объекты>,<Ссылки>)
Назначение:
Находит ссылки на объекты, переданные в списке значений.
Параметры:
<Объекты> - конкретное значение искомого объекта или значение типа ''СписокЗначений'', в котором данной процедуре передаются объекты, по которым надо найти ссылки.
<Ссылки> - идентификатор объекта типа ''ТаблицаЗначений'', в который данная процедура помещает найденные ссылки на объекты. Таблица значений состоит из 3 колонок: 1. объект на который ссылаются; 2. объект, который содержит ссылку; 3. комментарий к ссылке.
Ответ отправил: Краюшкин Игорь Валерьевич (статус: 6-ой класс)
Ответ отправлен: 24.11.2006, 17:42 Оценка за ответ: 5
Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Zlm!
Давайте мыло, скину образец обработки, которая с успехом работает. Использует НайтиСсылки(), ищет хорошо. Единственное замечание: НайтиСсылки завершает аварийно 1С с последующей переиндексацией в случае если найденных ссылок больше чем 65000. Поэтому я анализирую не всех контрагентов, а по чуть чуть.
Здравствуйте.
1C 8.0.13.32
В форме элемента справочника есть поле ввода Область
при выполнении строки
ЭтаФорма.ЭлементыФормы.Область.Доступность(Ложь);
выводит ошибку
{Справочник.Организации.Форма.ФормаЭлемента(3)}: Метод объекта не обнаружен (Доступность)
Что я не так делаю. Никак понять не могу
Отправлен: 24.11.2006, 10:11
Вопрос задал: Olov11 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Шальков Павел Владимирович
Здравствуйте, Olov11!
Доступность - это не метод, а свойство, т.е ...Доступность = Ложь; Удачи!
Отвечает: Махнев Даниил Анатольевич
Здравствуйте, Olov11!
Надо делать так...
ЭтаФорма.ЭлементыФорма.Область.Доступность=Истина (Ложь)
--------- Windows работает ?! Читайте внимательно инструкцию...
В догонку к Вопросу № 63.145:
Мне удалось развернутьт сервер терминалов на ХР Professional(воспользовавшись ссылкой http://martin-martin.narod.ru/xpterminal.html).
Но вот теперь проблема.В 1С у меня к базе на СОМ1 подключен сканер штрих-кода.Но при попытке подключения сканера к драйверу от Атол выдается собщение
"(-3) Порт недоступен"
В настройках сервера через gpedit.msc отключал "Не разрешать перенаправление СОМ-портов"
Пробовал в настройках клиента выставлять "Автоматически подключаться к этим устройствам при входе на удаленный компьютер" дисковые устройства и последовательные порты.
Чувствую,что где-то надо рыть в настройках.Но вот где?
Вся проблема в том, что зайдя на сервер терминалов - вы как-бы работаете от имени сервера а не зашедшей рабочей станции.
Разложим все по полочкам.
Сервер терминалов, движок 1С, база 1С находятся на машине ХР. Которая выполняет роль сервера. Далее "Сервер".
Еще есть рабочая станция с клиентом терминалов "Станция".
1. Сканер штрих-кодов подключен к "Серверу". Проблем быть не должно.
Сначала попробуйте управлять сканером с "сервера". Если получилось, то через терминал тоже пойдет.
2. Сканер штрих-кодов подключен к "Станции".
Чтобы "сервер" видел сканер на нем (сервере) должна быть учетная запись пользователя с паролем точно такие - же как на "Станции". Тогда "Сервер" будет обладать правами "Станции".
Посмотрите еще тут:
"сервер"
Пуск->выполнить
в окне tscc.msc - не уверен что такая оснастка есть на XP
"подключения->RDP-TCP->Свойства->Параметры клиента" поиграйтесь галочками
"Сопоставление COM-портов"
Удачи!
--------- Лучше два часа потерять, потом за пять минут долететь
Ответ отправил: Игорь К. (статус: 2-ой класс)
Ответ отправлен: 24.11.2006, 13:45