Доброе время суток, подскажите, в 1С не силен, но стоит задача, ввести на основании документа Поступления ТМЦ - Реализация Розница. В конфигураторе в документе Поступления ТМЦ поставил галачку нужного мне документа (РеализацияРозница) в 1С появился этот документ, но вылетает ошибка - Неверный вид документа - основания! не могу понять что еще нужно сделать, в самом модуле что-то прописать?
По теме из базы знаний
- Гибкая настройка контроля ввода документов,проведения,отмены проведения
- Пакетный ввод документов в "1С:Бухгалтерия 3.0" (счет, реализация, счет-фактура)
- Как сдать экзамен 1С:Специалист по платформе?
- Загрузка чеков из ФНС в документы 1С:БП, УНФ, ERP, КА и УТ
- Общий (полный, универсальный) журнал документов для всех конфигураций 1С на управляемых формах
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) В процедуре ВводНаОсновании() необходимо обойти все реквизиты документа основания и заполнить их в новом документе. Так же сделать цикл по строкам документа основания и заполнить табличную часть нового документа.
Посмотрите, как это делается в других документах.
Посмотрите, как это делается в других документах.
Можно поподробнее...
Процедура ВводНаОсновании(ДокументОснование)
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
Процедура ВводНаОсновании(ДокументОснование)
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
Как вариант поставить OpenConf (телепат)
в процедурке ВводНаОсновании
написать код типа
док = СоздатьОбъект("РеализацияРозница");
потом написать док.НовыйДокумент() (как то так :) ) телепат предложит заполнение структуры документа выбрать автозаполнение.
Телепат опишет все реквизиты вместе с обходом строк таблицы. ну а дальше прямое переприсваивание реквизитов которые совпадают в поступлении и в реализации и проверка как оно работает, с последущей отладкой того что не заполняется.
или как вариант если телепат воткнуть нет умения. просто открываем реквизиты реализации розница
и каждый реквизит в прямую присваиваем. Юзать глобальные процедуры и тем более что то там менять крайне не рекомендуется :)
И сразу походу вопрос возникает, а при вводе на основании продажные цены откуда брать будем ? После ввода на основании руками ставить ?
в процедурке ВводНаОсновании
написать код типа
док = СоздатьОбъект("РеализацияРозница");
потом написать док.НовыйДокумент() (как то так :) ) телепат предложит заполнение структуры документа выбрать автозаполнение.
Телепат опишет все реквизиты вместе с обходом строк таблицы. ну а дальше прямое переприсваивание реквизитов которые совпадают в поступлении и в реализации и проверка как оно работает, с последущей отладкой того что не заполняется.
или как вариант если телепат воткнуть нет умения. просто открываем реквизиты реализации розница
и каждый реквизит в прямую присваиваем. Юзать глобальные процедуры и тем более что то там менять крайне не рекомендуется :)
И сразу походу вопрос возникает, а при вводе на основании продажные цены откуда брать будем ? После ввода на основании руками ставить ?
В документе РеализацияРозница нужно поправить функцию ЗаполнениеПоДокументуОснованию()
Там указывается для каких документов -оснований какая функция заполнения по документу основанию будет вызываться. И скорее всего придется это заполнение писать самостоятельно. так что лучше все таки наймите специалиста.
Там указывается для каких документов -оснований какая функция заполнения по документу основанию будет вызываться. И скорее всего придется это заполнение писать самостоятельно. так что лучше все таки наймите специалиста.
процедура ВводНаОсновании(ДокументОснование)
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
не увидел проццыкла по строкам докумеента а только заполнение шапки
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
не увидел проццыкла по строкам докумеента а только заполнение шапки
Процедура ВводНаОсновании(ДокументОснование)
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
нужно добавить обработку строк таблицы.
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
нужно добавить обработку строк таблицы.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот