есть задача в список выбора документов Акт разногласия и Возврат от покупателя вставить колонку с флагом покрытие.
есть обработка которая ставит єтот флаг для Реализации.
по аналоги в список выбора Возврат от покупателя была добавлена колонка Покрытие
в обработку добавлены ссылки на эти документы
Перем мИзменениеСтатусаДоступно;
Процедура КнопкаВыполнитьНажатие(Кнопка)
ОчиститьСообщения();
// Прописать в регистр владельца документов
НаборЗаписей = РегистрыСведений.ВладельцыДокументов.СоздатьНаборЗаписей();
Период = ТекущаяДата();
Для каждого Документ Из СканированныеДокументы Цикл
Если НЕ Документ.Обработать Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = НаборЗаписей.Добавить();
НоваяСтрока.ДокументСсылка = Документ.Документ;
НоваяСтрока.Пользователь =глЗначениеПеременной("глТекущийПользователь");
НоваяСтрока.Период = Период;
Если ТоварОтгружен = 1 Тогда
Состояние = Перечисления.СостоянияРеализаций.ТоварОтгружен;
ИначеЕсли ТоварОтгружен = 2 Тогда
Состояние = Перечисления.СостоянияРеализаций.ОжиданиеДозаказа;
ИначеЕсли ТоварОтгружен = 3 Тогда
Состояние = Перечисления.СостоянияРеализаций.ВозвратНаСклад;
Иначе
Состояние = Перечисления.СостоянияРеализаций.Покрытие;
Состояние = Перечисления.СостоянияАктРазногласия.Покрытие;
Состояние = Перечисления.СостоянияВозвратТоваровОтПокупателя.Покрытие;
КонецЕсли;
// меняем статус документа реализации
Если мИзменениеСтатусаДоступно Тогда
НаборЗаписейСостоянияРеализация = РегистрыСведений.СостоянияРеализацийТоваровУслуг.СоздатьНаборЗаписей();
НаборЗаписейСостоянияАктРазногласия = РегистрыСведений.СостоянияАктРазногласия.СоздатьНаборЗаписей();
НаборЗаписейСостоянияВозвратТоваровОтПокупателя = РегистрыСведений.СостоянияВозвратТоваровОтПокупателя.СоздатьНаборЗаписей();
Отбор = НаборЗаписейСостоянияРеализация.Отбор;
Отбор = НаборЗаписейСостоянияАктРазногласия.Отбор;
Отбор = НаборЗаписейСостоянияВозвратТоваровОтПокупателя.Отбор;
Отбор.Документ.Установить(Документ.Документ);
Отбор.Состояние.Установить(Состояние);
Отбор.Период.Установить(Период);
Запись = НаборЗаписейСостоянияРеализация.Добавить();
Запись = НаборЗаписейСостоянияАктРазногласия.Добавить();
Запись = НаборЗаписейСостоянияВозвратТоваровОтПокупателя.Добавить();
Запись.Период = Период;
Запись.Пользователь =глЗначениеПеременной("глТекущийПользователь");
Запись.Документ = Документ.Документ;
Запись.Состояние = Состояние;
НаборЗаписейСостоянияРеализация.Записать(Истина);
НаборЗаписейСостоянияАктРазногласия.Записать(Истина);
НаборЗаписейСостоянияВозвратТоваровОтПокупателя.Записать(Истина);
Если ОтменитьПокрытие = Истина Тогда
Рег = РегистрыСведений.СостоянияРеализацийТоваровУслуг;
Рег = РегистрыСведений.СостоянияАктРазногласия;
Рег = РегистрыСведений.СостоянияВозвратТоваровОтПокупателя;
Выборка = Рег.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Документ = Документ.Документ И Выборка.Состояние = Перечисления.СостоянияРеализаций.Покрытие Тогда
Выборка.ПолучитьМенеджерЗаписи().Удалить();
КонецЕсли;
Если Выборка.Документ = Документ.Документ И Выборка.Состояние = Перечисления.СостоянияАктРазногласия.Покрытие Тогда
Выборка.ПолучитьМенеджерЗаписи().Удалить();
КонецЕсли;
Если Выборка.Документ = Документ.Документ И Выборка.Состояние = Перечисления.СостоянияВозвратТоваровОтПокупателя.Покрытие Тогда
Выборка.ПолучитьМенеджерЗаписи().Удалить();
КонецЕсли;
КонецЦикла;
Сообщить("Покрытие снято! Документ:"+Документ.Документ ,СтатусСообщения.Внимание);
Иначе
Сообщить("Покрытие установлено! Документ:"+Документ.Документ ,СтатусСообщения.Внимание);
КонецЕсли;
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать(Ложь);
КонецПроцедуры
Процедура ОбработатьСканирование(Данные)
Сообщение = СокрЛП(Данные);
Если НЕ ЗначениеЗаполнено(Сообщение) Тогда
Возврат;
КонецЕсли;
Попытка
ИД = Новый УникальныйИдентификатор(Сообщение);
Исключение
Предупреждение("Ошибка считывания штрихкода. Пересканируйте последний документ.");
Возврат;
КонецПопытки;
Для Каждого ТекСтрока Из Метаданные.Документы Цикл
СсылкаНаДокумент = Документы[ТекСтрока.Имя].ПолучитьСсылку(ИД);
Объект = СсылкаНаДокумент.ПолучитьОбъект();
Если Объект <> Неопределено Тогда
РезПоиска = СканированныеДокументы.Найти(Объект.Ссылка,"Документ");
Если НЕ РезПоиска = Неопределено Тогда
НоваяСтрока = РезПоиска;
Сообщить("Документ "+Объект.Ссылка+" уже присутствует в таблице. Запись обновлена. Тек. дата/время: " + ТекущаяДата(), СтатусСообщения.Информация);
Иначе
НоваяСтрока = СканированныеДокументы.Добавить();
Сообщить("Документ "+Объект.Ссылка+" добавлен в таблицу. Тек. дата/время: " + ТекущаяДата(), СтатусСообщения.Информация);
КонецЕсли;
НоваяСтрока.Документ = Объект.Ссылка;
НоваяСтрока.Контрагент = Объект.Ссылка.Контрагент;
Если мИзменениеСтатусаДоступно Тогда
Если ТоварОтгружен = 1 Тогда
НоваяСтрока.СостояниеДокумента = Перечисления.СостоянияРеализаций.ТоварОтгружен;
ИначеЕсли ТоварОтгружен = 2 Тогда
НоваяСтрока.СостояниеДокумента = Перечисления.СостоянияРеализаций.ОжиданиеДозаказа;
ИначеЕсли ТоварОтгружен = 3 Тогда
НоваяСтрока.СостояниеДокумента = Перечисления.СостоянияРеализаций.ВозвратНаСклад;
Иначе
НоваяСтрока.СостояниеДокумента = Перечисления.СостоянияРеализаций.Покрытие;
КонецЕсли;
КонецЕсли;
НоваяСтрока.Сумма = Объект.Ссылка.СуммаДокумента;
НоваяСтрока.Изменен = Объект.Ссылка.Изменен;
НоваяСтрока.Обработать = Истина;
Прервать; // УИД может принадлежать только одному объекту в базе данных
КонецЕсли;
КонецЦикла;
Если Объект = Неопределено Тогда
Сообщить("Штрихкод не может быть обработан!!!");
КонецЕсли;
КонецПроцедуры
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Не ВводДоступен() Тогда
Возврат;
КонецЕсли;
//ПолучитьСерверТО().ОбработатьВнешнееСобытие(Событие, Данные, ЭтаФорма);
ОбработатьСканирование(Данные);
КонецПроцедуры
Процедура ПриОткрытии()
мИзменениеСтатусаДоступно = Истина;
ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
ТекПользователь = глЗначениеПеременной("глТекущийПользователь");
ДоступнаЭкспедиция = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"ПопалВЭкспедицию");
//ДоступнаКорректровкаРевизор = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"ОтданНаКорректировкуРевизор");
//ДоступнаКорректровкаБухгалтер = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"ОтданНаКорректировкуБухгалтер");
//ДоступнаКорректровкаПродажи = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"ОткорректированОтделПродаж");
ДоступнаПокрытие = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"Покрытие");
СостояниеПоУмолчанию = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"ОсновноеСостояниеРеализации");
Если СостояниеПоУмолчанию = Перечисления.СостоянияРеализаций.ТоварОтгружен Тогда
ТоварОтгружен = 1;
ИначеЕсли СостояниеПоУмолчанию = Перечисления.СостоянияРеализаций.ОжиданиеДозаказа Тогда
ТоварОтгружен = 2;
ИначеЕсли СостояниеПоУмолчанию = Перечисления.СостоянияРеализаций.ВозвратНаСклад Тогда
ТоварОтгружен = 3;
Иначе
ТоварОтгружен = 4;
КонецЕсли;
ЭлементыФормы.ТоварОтгружен.Доступность = ДоступнаЭкспедиция;
ЭлементыФормы.ОжиданеДозаказа.Доступность = ДоступнаЭкспедиция;
ЭлементыФормы.ВозвратНаСклад.Доступность = ДоступнаЭкспедиция;
ЭлементыФормы.Покрытие.Доступность = ДоступнаПокрытие;
Если Не ДоступнаЭкспедиция И Не ДоступнаПокрытие Тогда
Сообщить("У Вас нет прав устанавливать статус документа. Если Вам необходимы такие правта, то обратитесь к программисту!!!");
ЭтаФорма.Закрыть();
КонецЕсли;
КонецПроцедуры
Функция ПоддерживаетсяВидТО(Вид) Экспорт
Результат = Ложь;
Если Вид = Перечисления.ВидыТорговогоОборудования.СканерШтрихКода Тогда
Результат = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции // ПоддерживаетсяВидТО()
Функция СШКНеизвестныйКод(Штрихкод, ТипКода, СШК) Экспорт
Возврат Ложь;
КонецФункции // СШКНеизвестныйКод()
// Процедура осуществляет обработку ошибки, произошедшей при работе со сканером
// штрихкода.
//
// Параметры:
// Ошибка - <ПеречислениеСсылка.ТООшибки*>
// - Возникшая ошибка.
//
// Штрихкод - <Строка>
// - Считанный штрихкод или пустая строка, если штрихкод не был
// считан.
//
// ТипШК - <ПланыВидовХарактеристикСсылка.ТипыШтрихкодов>
// - Тип штрихкода или пустая ссылка в случае, если тип не определён.
//
// СШК - <Строка>
// - Идентификатор сканера штрихкода, с которым связано данное
// событие.
//
Процедура СШКОшибка(Ошибка, Штрихкод, ТипШК, СШК) Экспорт
Текст = ПолучитьСерверТО().ПолучитьТекстОшибкиСШКТО(Ошибка, Штрихкод, ТипШК);
Предупреждение(Текст);
КонецПроцедуры // СШКОшибка()
Процедура ДобавитьНажатие(Элемент)
ОбработатьСканирование(Штрихкод);
КонецПроцедуры
Процедура СканированныеДокументыПередНачаломДобавления(Элемент, Отказ, Копирование)
//Отказ = Истина;
КонецПроцедуры
Процедура СканированныеДокументыДокументПриИзменении(Элемент)
ТекСтрока = ЭлементыФормы.СканированныеДокументы.ТекущиеДанные;
ТекСтрока.Контрагент = ТекСтрока.Документ.Контрагент;
ТекСтрока.Сумма = ТекСтрока.Документ.СуммаДокумента;
// Вставить содержимое обработчика.
КонецПроцедуры
Процедура ДействияФормыОчиститьТаблицу(Кнопка)
СканированныеДокументы.Очистить();
КонецПроцедуры
при попытке запустить обработку выдает
Цитата
Обработка.СчитываниеШтрихкода.Форма.Форма(50)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписейСостоянияРеализация.Записать(Истина);
по причине:
Запись не верна! Период не может быть пустым!: СостоянияРеализацийТоваровУслуг: 01.01.0001 00:00:00, , (Регистр сведений: Состояния реализаций товаров услуг; Номер строки: 1)
НаборЗаписейСостоянияРеализация.Записать(Истина);
по причине:
Запись не верна! Период не может быть пустым!: СостоянияРеализацийТоваровУслуг: 01.01.0001 00:00:00, , (Регистр сведений: Состояния реализаций товаров услуг; Номер строки: 1)
Как это вылечить ?
Обработку писал не я, досталась в наследство от програмера он уволился и контакта с ним нет.
(УТ 8,1)