Добрый день. Есть документ с комплектацией номенклатуры, при печати гарантийного талона из этого документа, в поле "срок гарантии" заносятся данные из константы (число 12). Срок гарантии зависит от целиСборки (реквизит документа).
Как можно получить значение реквизита ЦельСборки, чтобы на его основании выбирать срок гарантии? Что-то наподобие: Если значение реквизита ЦельСборки такое Тогда берем данные из константы номер1 Иначе берем данные из константы номер2
ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ОбластьЗаголовок.Параметры.Заполнить(Выборка);
Пока ВыборкаСобранныйПК.Следующий() Цикл ОбластьСобранныйПК.Параметры.Заполнить(ВыборкаСобранныйПК); ОбластьСПК.Параметры.Заполнить(ВыборкаСобранныйПК); ТабДок.Вывести(ОбластьСобранныйПК, ВыборкаСобранныйПК.Уровень()); ТабДок.Вывести(ОбластьСПК, ВыборкаСобранныйПК.Уровень());
КонецЦикла;
ТабДок.Вывести(ОбластьКомплектующиеШапка); ВыборкаКомплектующие = Выборка.Комплектующие.Выбрать(); Пока ВыборкаКомплектующие.Следующий() Цикл ОбластьКомплектующие.Параметры.Заполнить(ВыборкаКомплектующие);
// сюда добавить условие выбора константы со сроком гарантии
//// Если Выборка.НайтиСледующий("Тендер, ") Тогда //// ОбластьКомплектующие.Параметры.Гарантия = Константы.СрокГарантииТендер.Получить(); //// Иначе //// ОбластьКомплектующие.Параметры.Гарантия = Константы.СрокГарантии.Получить(); //// //// КонецЕсли; ОбластьКомплектующие.Параметры.Гарантия = Константы.СрокГарантии.Получить(); ТабДок.Вывести(ОбластьКомплектующие, ВыборкаКомплектующие.Уровень());
MATEVI @ Сегодня, 19:23
, Спасибо, исправил, но эта ошибка относилась больше к выводу сообщения пользователю. Если раньше выводилось, что просто чего-то не хватает, то сейчас выводится конкретная позиция. На всякий случай привожу весь код процедуры:
Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
// регистр ОстаткиТоваров Расход // Движения.ОстаткиТоваров.Записывать = Истина;
// 1. Получение запросом данных документа Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | СУММА(Товары.Количество) КАК Количество |ПОМЕСТИТЬ Товары |ИЗ | Документ.СборкаПК.Комплектующие КАК Товары |ГДЕ | Товары.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | Товары.Номенклатура | |ИНДЕКСИРОВАТЬ ПО | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Количество КАК Количество |ИЗ | Товары КАК Товары";
// 2. Формирование движений-расход регистра Движения.ОстаткиТоваров.Очистить(); ВыборкаТовары = РезультатЗапроса.Выбрать(); Пока ВыборкаТовары.Следующий() Цикл Движение = Движения.ОстаткиТоваров.ДобавитьРасход(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаТовары.Номенклатура; Движение.Количество = ВыборкаТовары.Количество; КонецЦикла;
// 3. Запись движений в БД Движения.ОстаткиТоваров.Записывать = Истина; Движения.Записать();
// 4. Запрос, получающий отрицательные остатки из регистра Запрос.Текст = "ВЫБРАТЬ | Остатки.Номенклатура КАК Номенклатура, | ПРЕДСТАВЛЕНИЕССЫЛКИ(Остатки.Номенклатура) КАК НоменклатураПредставление, | -Остатки.КоличествоОстаток КАК Дефицит |ИЗ | РегистрНакопления.ОстаткиТоваров.Остатки( | &МоментВремени, | Номенклатура В | (ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура | ИЗ | Товары КАК Товары)) КАК Остатки |ГДЕ | Остатки.КоличествоОстаток < 0";
ГраницаКонтроля = Новый Граница(МоментВремени(), ВидГраницы.Включая); Запрос.УстановитьПараметр("МоментВремени", ГраницаКонтроля); РезультатЗапроса = Запрос.Выполнить();
// 5. Вывод сообщений о недостатке товаров Если Не РезультатЗапроса.Пустой() Тогда Отказ = Истина; ВыборкаОшибки = РезультатЗапроса.Выбрать(); Пока ВыборкаОшибки.Следующий() Цикл Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Товара "+ВыборкаОшибки.НоменклатураПредставление+" недостаточно в количестве "+ВыборкаОшибки.Дефицит+" шт."; Сообщение.Сообщить(); КонецЦикла; КонецЕсли;
Для Каждого ТекСтрокаКомплектующие Из Комплектующие Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаКомплектующие.Номенклатура; Движение.Склад = Склад; Движение.Серийник = ТекСтрокаКомплектующие.СерийныйНомер; Движение.Количество = ТекСтрокаКомплектующие.Количество; КонецЦикла;
// регистр ОстаткиТоваров Приход Движения.ОстаткиТоваров.Записывать = Истина; Для Каждого ТекСтрокаСобранныйПК Из СобранныйПК Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаСобранныйПК.Номенклатура; Движение.Склад = Склад; Движение.Серийник = ТекСтрокаСобранныйПК.Серия; Движение.Количество = ТекСтрокаСобранныйПК.Количество; КонецЦикла;
// регистр ОтветственныеЛица Приход Движения.ОтветственныеЛица.Записывать = Истина; Для Каждого ТекСтрокаОтветственныеЛица Из СНТ Цикл Движение = Движения.ОтветственныеЛица.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Сборщик = ТекСтрокаОтветственныеЛица.Сборка; Движение.Настройщик = ТекСтрокаОтветственныеЛица.Настройка; Движение.Тестировщик = ТекСтрокаОтветственныеЛица.Тесты; Движение.Количество = ТекСтрокаОтветственныеЛица.СборкаКоличество; Движение.НастройкаКоличество = ТекСтрокаОтветственныеЛица.НастройкаКоличество; Движение.ТестКоличество = ТекСтрокаОтветственныеЛица.ТестыКоличество;
Добрый день. Делаю контроль остатков и столкнулся с непонятностью, допустим нужно укомплектовать 4 номенклатуры системных блоков, 2 из них комплектуются нормально, следущие два вылетают с ошибкой, хотя остатки комплектующих в норме. вот отрывок кода с остатками:
// 1. Получение запросом данных документа Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | СУММА(Товары.Количество) КАК Количество |ПОМЕСТИТЬ Товары |ИЗ | Документ.СборкаПК.Комплектующие КАК Товары |ГДЕ | Товары.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | Товары.Номенклатура | |ИНДЕКСИРОВАТЬ ПО | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Количество КАК Количество |ИЗ | Товары КАК Товары";
// 2. Формирование движений-расход регистра Движения.ОстаткиТоваров.Очистить(); ВыборкаТовары = РезультатЗапроса.Выбрать(); Пока ВыборкаТовары.Следующий() Цикл Движение = Движения.ОстаткиТоваров.ДобавитьРасход(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаТовары.Номенклатура; Движение.Количество = ВыборкаТовары.Количество; КонецЦикла;
// 3. Запись движений в БД Движения.ОстаткиТоваров.Записывать = Истина; Движения.Записать();
// 4. Запрос, получающий отрицательные остатки из регистра Запрос.Текст = "ВЫБРАТЬ | Остатки.Номенклатура КАК Номенклатура, | ПРЕДСТАВЛЕНИЕССЫЛКИ(Остатки.Номенклатура) КАК НоменклатураПредставление, | -Остатки.КоличествоОстаток КАК Дефецит |ИЗ | РегистрНакопления.ОстаткиТоваров.Остатки( | &МоментВремени, | Номенклатура В | (ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура | ИЗ | Товары КАК Товары)) КАК Остатки |ГДЕ | Остатки.КоличествоОстаток < 0";
ГраницаКонтроля = Новый Граница(МоментВремени(), ВидГраницы.Включая); Запрос.УстановитьПараметр("МоментВремени", ГраницаКонтроля); РезультатЗапроса = Запрос.Выполнить();
// 5. Вывод сообщений о недостатке товаров Если Не РезультатЗапроса.Пустой() Тогда Отказ = Истина; ВыборкаОшибки = РезультатЗапроса.Выбрать(); Пока ВыборкаОшибки.Следующий() Цикл Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Товара "+ВыборкаОшибки.НоменклатураПредставление+" недостаточно в количестве "+ВыборкаОшибки.Дефицит+" шт."; Сообщение.Сообщить(); КонецЦикла; КонецЕсли;
ошибка
Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: {Документ.СборкаПК.МодульОбъекта(80)}: Поле объекта не обнаружено (Дефицит) Сообщение.Текст = "Товара "+ВыборкаОшибки.НоменклатураПредставление+" недостаточно в количестве "+ВыборкаОшибки.Дефицит+" шт.";
Добрый вечер. Нужен совет от бывалых по организации данных и их учете в документе. Конфигурация самописная. Что требуется от 1С: поступление товара (комплектующие для ПК, учитываются серийные номера), дальше комплектация номенклатуры (из комплектующих должен получиться системный блок), печать гарантийного талона. Отчеты: остатки товаров на складе, учет операций по сборке, настройке, тестам. Что уже сделано: - приходование товаров (пока криво, в плане юзабилити, но в целом свою функцию выполняет). - комплектация номенклатуры. - списание товара в собранном виде на склад. - печать гарантийного талона.
На комплектации подробнее. Есть четыре табличные части: 1. Комплектующие для списания: заносятся номенклатура, количество, серийный номер, примечание. 2. Собранный ПК для создания. Наименование (номенклатура, серийный номер, количество 1) 3. Табличная часть с результатами тестов. 4. Табличная часть для учета ответственных лиц (собрал ПК такой-то сотрудник и количество, настроил второй и количество, протестировал третий и количество).
Все работает, ведется контроль остатков.
Возникла необходимость учета проведенных операций (сборка, настройка, тесты). Здесь возник затык. Делаю так: создал регистр накопления для учета этих операций. Данные в регистр вносятся. А вот получить их в нормальном виде пока не могу (банальная нехватка знаний). В регистре накопления есть такие измерения: сборщик, настройщик, тестировщик. Ресурсы: количествоСобранныхПК, количествоНастроенныхПК, количествоПротестированныхПК.
Нужен совет на счет документа "комплектация номенклатуры". Где лучше хранить данные об операциях сборка, настройка, тесты. В табличной части или реквизитах: Сборщик (заполняется из справочника Сотрудники), Настройщик (тоже самое), Тестировщик (тоже самое)?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!