1С: Специалист по платформе. Задача 1.25

12.03.15

Разработка - Подготовка к аттестации

Решение задачи 1.25 Специалист по платформе.

Скачать файлы

Наименование Файл Версия Размер
Z1_25.dt
.dt 180,72Kb
9
.dt 180,72Kb 9 Скачать

 

Решение:

1) Для решения потребуется 2 регистра накопления "Взаиморасчеты" и "Счета".
Структуры регистров:
Взаиморасчеты Измерения "Контрагент", "Счет" ресурс "Сумма".
Счета Измерения "Контрагент",  ресурс "Сумма".

2)  Документы "Расходная накладная " и 3 новых "Пени", "ПоступлениеДенег" и "Счет".
Документы будут делать движения по регистрам след. образом:
Счет ( Счет +)
Расходная накладная (Взаиморасчеты+ , Счета-)
Поступление денег "Взаиморасчеты-)
Пени(Взаиморасчеты+)

3) Документ "Счет"
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.Счета.Записывать = Истина;
Движение = Движения.Счета.ДобавитьПриход();
Движение.Период = Дата;
Движение.Счет = Ссылка;
Движение.Сумма = Сумма;
КонецПроцедуры


4) Документ "Расходная накладная"
Чтобы документ вводился только на основании счета, потребуется 2 процедуры

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ДанныеЗаполнения = Неопределено Тогда
Отказ = Истина;
Сообщение = Новый("СообщениеПользователю");
Сообщение.Текст = "Документ можно вводить только на основании счета";
Сообщение.Сообщить();
Иначе
Счет = ДанныеЗаполнения;
Контрагент = ДанныеЗаполнения.Контрагент;
Дата = ТекущаяДата();
КонецЕсли;
КонецПроцедуры
 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Не ЗначениеЗаполнено(Объект.Счет) Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры

 
Обработка проведения:
 
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
 
Движения.Счета.Записывать = Истина;
Движения.Взаиморасчеты.Записывать = Истина;
// Блокировка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Счета");
ЭлементБлокировки.УстановитьЗначение("Счет", Счет);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
 
Запрос = Новый("Запрос");
Запрос.Текст ="ВЫБРАТЬ
              |СчетаОстатки.СуммаОстаток КАК Долг
              |ИЗ
              |РегистрНакопления.Счета.Остатки(&ТочкаИтогов, Счет = &Счет) КАК СчетаОстатки";
Запрос.УстановитьПараметр("Счет",Счет);
ТочкаИтогов = ?(РежимПроведения= РежимПроведенияДокумента.Оперативный, Неопределено, Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("ТочкаИтогов",ТочкаИтогов);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда 
Выборка = Результат.Выбрать();
Выборка.Следующий();
Если Выборка.Долг < СуммаПоДокументу Тогда
Отказ = Истина;
Сообщение = Новый("СообщениеПользователю");
Сообщение.Текст = "Сумма документа превышает сумму долга "+ Выборка.Долг;
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
 
Если Не Отказ Тогда
Движение = Движения.Счета.ДобавитьРасход();
Движение.Период = Дата;
Движение.Счет = Счет;
Движение.Сумма = СуммаПоДокументу;
 
Движение = Движения.Взаиморасчеты.ДобавитьПриход();
Движение.Период = Дата;
Движение.Счет = Счет;
Движение.Сумма = СуммаПоДокументу;
Движение.Контрагент = Контрагент;
КонецЕсли;
КонецПроцедуры
 
 
5) Документ "Поступление денег"
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.Взаиморасчеты.Записывать = Истина;
Движения.Взаиморасчеты.Записать() ;
 
// Блокировка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Взаиморасчеты");
ЭлементБлокировки.УстановитьЗначение("Контрагент", Контрагент);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
 
Запрос  = Новый("Запрос");
Запрос.Текст = "ВЫБРАТЬ
               |ВзаиморасчетыОстатки.Счет,
               |ВзаиморасчетыОстатки.СуммаОстаток КАК Долг
               |ИЗ
               |РегистрНакопления.Взаиморасчеты.Остатки(&ТочкаИтогов, Контрагент = &Контрагент) КАК ВзаиморасчетыОстатки
               |
               |УПОРЯДОЧИТЬ ПО
               |ВзаиморасчетыОстатки.Счет.Дата
               |ИТОГИ
               |СУММА(Долг)
               |ПО
               |ОБЩИЕ";
 
Запрос.УстановитьПараметр("Контрагент",Контрагент);
ТочкаИтогов = ?(Режим= РежимПроведенияДокумента.Оперативный, Неопределено, Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("ТочкаИтогов",ТочкаИтогов);
 
ВыборкаИтоги = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Общие");
ВыборкаИтоги.Следующий();
Если ВыборкаИтоги.Долг < Сумма Тогда
Отказ = Истина;
Сообщение = Новый("СообщениеПользователю");
Сообщение.Текст = "Сумма документа превышает сумму долга "+ ВыборкаИтоги.Долг;
Сообщение.Сообщить();
Иначе
ОсталосьСписать = Сумма;
Выборка = ВыборкаИтоги.Выбрать();
Пока Выборка.Следующий() и ОсталосьСписать >0 Цикл 
СуммаКСписанию = Мин(ОсталосьСписать, Выборка.Долг);
Движение = Движения.Взаиморасчеты.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Контрагент = Контрагент;
Движение.Счет = Выборка.Счет;
Движение.Сумма = СуммаКСписанию;
ОсталосьСписать = ОсталосьСписать - СуммаКСписанию;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
 

6) Документ "Пени"

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.Взаиморасчеты.Записывать = Истина;
Движения.Взаиморасчеты.Записать() ;

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Взаиморасчеты");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Счета");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |СчетаОстаткиИОбороты.Счет,
               |СчетаОстаткиИОбороты.СуммаКонечныйОстаток,
               |МАКСИМУМ(СчетаОстаткиИОбороты.Регистратор.Дата) КАК ДатаПолнойОтгрузки
               |ПОМЕСТИТЬ Счета
               |ИЗ
               |РегистрНакопления.Счета.ОстаткиИОбороты(, &ТочкаИтогов, Регистратор, , ) КАК СчетаОстаткиИОбороты
               |ГДЕ
               |СчетаОстаткиИОбороты.СуммаКонечныйОстаток = 0
               |
               |СГРУППИРОВАТЬ ПО
               |СчетаОстаткиИОбороты.Счет,
               |СчетаОстаткиИОбороты.СуммаКонечныйОстаток
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |Счета.Счет,
               |ЕСТЬNULL(ВзаиморасчетыОстатки.СуммаОстаток, 0) КАК Долг,
               |Счета.Счет.ПроцентПени КАК ПроцентПени,
               |ВзаиморасчетыОстатки.Контрагент,
               |РАЗНОСТЬДАТ(Счета.ДатаПолнойОтгрузки, &Дата, ДЕНЬ) КАК ДнейПросрочки
               |ИЗ
               |РегистрНакопления.Взаиморасчеты.Остатки(
               |&ТочкаИтогов,
               |Счет В
               |(ВЫБРАТЬ
               |Счета.Счет
               |ИЗ
               |Счета)) КАК ВзаиморасчетыОстатки
               |ЛЕВОЕ СОЕДИНЕНИЕ Счета КАК Счета
               |ПО ВзаиморасчетыОстатки.Счет = Счета.Счет";

Запрос.УстановитьПараметр("Дата", Дата);
ТочкаИтогов = ?(РежимПроведения= РежимПроведенияДокумента.Оперативный, Неопределено, Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("ТочкаИтогов",ТочкаИтогов);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.Взаиморасчеты.ДобавитьПриход();
Движение.Период     = Дата;
Движение.Счет       = Выборка.Счет;
Движение.Контрагент = Выборка.Контрагент;
Движение.Сумма      = Выборка.Долг * Выборка.ДнейПросрочки *(Выборка.ПроцентПени/100);
КонецЦикла;
КонецПроцедуры
 
7) Отчет "Анализ состояния счетов"

Текст запроса:

ВЫБРАТЬ
СчетаОстаткиИОбороты.Счет,
МАКСИМУМ(СчетаОстаткиИОбороты.Регистратор.Дата) КАК РегистраторДата
ПОМЕСТИТЬ ОтгруженныеСчета
ИЗ
РегистрНакопления.Счета.ОстаткиИОбороты(, &Период, Регистратор, , ) КАК СчетаОстаткиИОбороты
ГДЕ
СчетаОстаткиИОбороты.СуммаКонечныйОстаток = 0

СГРУППИРОВАТЬ ПО
СчетаОстаткиИОбороты.Счет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СчетаОстатки.Счет
ПОМЕСТИТЬ НеотгруженныеСчета
ИЗ
РегистрНакопления.Счета.Остатки(&Период, ) КАК СчетаОстатки
ГДЕ
СчетаОстатки.СуммаОстаток > 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВзаиморасчетыОстатки.Счет,
ОтгруженныеСчета.РегистраторДата КАК ДатаПолнойОтгрузки,
ВзаиморасчетыОстатки.СуммаОстаток КАК ЗадолженностьПоСчету
ИЗ
РегистрНакопления.Взаиморасчеты.Остатки(
&Период,
Счет В
(ВЫБРАТЬ
НеотгруженныеСчета.Счет КАК Счет
ИЗ
НеотгруженныеСчета КАК НеотгруженныеСчета)
ИЛИ Счет В
(ВЫБРАТЬ
ОтгруженныеСчета.Счет КАК Счет
ИЗ
ОтгруженныеСчета КАК ОтгруженныеСчета)) КАК ВзаиморасчетыОстатки
ЛЕВОЕ СОЕДИНЕНИЕ ОтгруженныеСчета КАК ОтгруженныеСчета
ПО ВзаиморасчетыОстатки.Счет = ОтгруженныеСчета.Счет
ГДЕ

ВзаиморасчетыОстатки.СуммаОстаток > 0


8) Отчет "Анализ счета за период"

ВЫБРАТЬ
ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Документ,
ВзаиморасчетыОстаткиИОбороты.СуммаПриход КАК Задолженность,
ВзаиморасчетыОстаткиИОбороты.СуммаРасход КАК Оплачено
ИЗ
РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, ДвиженияИГраницыПериода, Счет = &Счет) КАК ВзаиморасчетыОстаткиИОбороты

УПОРЯДОЧИТЬ ПО
ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата

См. также

Запросы 1С OnLine. Интерактивная обучающая программа.

Подготовка к аттестации Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Интерактивное изучение языка запросов с самого начала: - 50 практических заданий с различным уровнем сложности; - Методические материалы по практике написания запросов; - Описание назначения таблиц и индексов 1С Предприятие 8; - Методика решения реальных задач запросом 1С; - Автоматическая система проверки решений с указанием ошибок; - Инструкции по решению задач с разъяснениями; - Техническая поддержка пользователей. Подходит для начинающих и действующих разработчиков 1С

1800 руб.

11.02.2014    73835    677    13    

165

Оптимизация запросов 1С - от теории к практике

Подготовка к аттестации Запросы Конфигурации 1cv8 Платные (руб)

Желаете повысить свой уровень разработки? Не знаете, как оптимизировать работу тяжелых запросов 1С? Или знаете методы оптимизации, но на практике не получаете результат? Тогда эта интерактивная обучающая программа для Вас! Оптимизация запросов прямо в программе 1С:Предприятие 8. Несколько десятков практических заданий, рассматривающих методы оптимизации на практике. От Вас требуются реальные решения - оптимизация представленных запросов. Автоматизированная система оценит Ваш запрос и представит результат проверки.

1800 руб.

06.07.2015    70801    118    9    

128

Программист 1С: как начать с нуля с минимальными затратами

Подготовка к аттестации Платформа 1С v8.3 Россия Бесплатно (free)

Информация будет полезна многим начинающим программистам 1C и тем, кто хочет что-то изменить в своей жизни, испытывая жизненные трудности, с минимальными затратами.

18.03.2024    1028    AlOkt    4    

6

Как я готовилась к экзамену на Специалиста по платформе 1С

Подготовка к аттестации Платформа 1С v8.3 Россия Бесплатно (free)

Готовилась три месяца, сдала с первого раза. Делюсь опытом, лайфхаками и ресурсами, по которым учила материал.

14.03.2024    9353    PROSTO-1C    46    

78

Как я стал Экспертом по технологическим вопросам за 3 месяца. Часть 2 (обновлена)

Подготовка к аттестации Бесплатно (free)

Мой опыт подготовки и сдачи к экзамену 1С: Эксперт по технологическим вопросам. Часть 2.

04.02.2024    5618    shuhratsj    16    

72

Как я стал Экспертом по технологическим вопросам за 3 месяца

Подготовка к аттестации Бесплатно (free)

Мой опыт подготовки и сдачи к экзамену 1С: Эксперт по технологическим вопросам за 3 месяца. Часть 1.

29.01.2024    12992    shuhratsj    102    

153

1С: Специалист-консультант ЗУП 8. Решения из сборника задач для подготовки к экзамену «1С:Специалист-консультант» по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“, редакция сентябрь 2023. Часть 6

Подготовка к аттестации Зарплата Кадровый учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Абонемент ($m)

Часть шестая. Делюсь сквозным решением 15-ти задач из сборника задач для подготовки к экзамену «1С:Специалист-консультант» по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“, редакция сентябрь 2023.

5 стартмани

01.12.2023    1315    16    Ocherkcons    0    

6

1С: Специалист-консультант ЗУП 8. С чего начать решение билета на экзамене? Актуальность: ноябрь 2023 года

Подготовка к аттестации Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Делюсь наработками из опыта подготовки к экзамену на получение сертификата 1С:Специалист-консультант по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“. Первые минуты на экзамене.

17.11.2023    2347    Ocherkcons    0    

6
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. vasyak319 150 12.03.15 17:24 Сейчас в теме
ОбработкаЗаполнения написана неправильно, так как ДанныеЗаполнения при интерактивном вводе нового не всегда равны Неопределено, так что нужно проверять, что передан именно счёт.
Дальше читать не стал.
4. Betis 26 13.03.15 08:36 Сейчас в теме
(1) vasyak319, не могу согласится, по условию задачи накладная может вводится только на основании счета, поэтому "данныезаполнения" могут быть только "счет" или неопределено, или Вы видите еще какие-то варианты?
9. vasyak319 150 13.03.15 10:49 Сейчас в теме
(4) Я бы запостил сюда цитату, но уверен, что ваш Синтакс-Помощник ничуть не хуже моего, поэтому забивать форум не буду. Просто гляньте.
12. Betis 26 13.03.15 11:17 Сейчас в теме
(9) vasyak319,может Вы удивитесь, но в моем Синтакс-Помощнике как раз и описаны 2 варианта конструктора Новый.
13. vasyak319 150 13.03.15 12:07 Сейчас в теме
(12) вы бы посмотрели, на какое из ваших сообщений я ответил. Про Новый там речь не шла.
14. Betis 26 13.03.15 12:57 Сейчас в теме
(13) vasyak319,
Прошу пардона, был невнимателен.
СП глянул, увы не понял на что Вы намекаете.
Еще раз возвращаюсь к Вашему первому комменту
"ОбработкаЗаполнения написана неправильно, так как ДанныеЗаполнения при интерактивном вводе нового не всегда равны Неопределено, так что нужно проверять, что передан именно счёт.
Дальше читать не стал."

Во всяком случае моя "неправильная" обработка заполнения у меня работает без ошибок. Тестил 2 варианта ввод на основании - тогда ДанныеЗаполнения= Документ.Cчет и при интерактивном вводе - тогда ДанныеЗаполнения=Неопределено. В процедуре обрабатывается каждый из варинтов , иных вариантов обнаружить не удалось.
20. vasyak319 150 13.03.15 14:35 Сейчас в теме
(14)
При интерактивном вводе нового из формы списка параметр является структурой, элементы которой соответствуют тем параметрам отбора формы списка, у которых способ сравнения Равно или ВСписке с единственным элементом списка. Если таких элементов отбор списка не содержит, данный параметр равен Неопределено
22. Betis 26 13.03.15 15:25 Сейчас в теме
(20) vasyak319, В форме списка устанавливал отбор на "=" (по сумме") и на "всписке" (на контрагентов). Ошибки не случилось.
2. slazzy 42 12.03.15 17:48 Сейчас в теме
4) Документ "Расходная накладная"
Чтобы документ вводился только на основании счета, потребуется 2 процедуры

На самом деле для этого понадобится 1 строчка

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Отказ = НЕ ЗначениеЗаполнено(Параметры.Основание);
КонецПроцедуры


Кстати за такой синтаксис отрубают руки
Запрос = Новый("Запрос");



Движения.Счета.Записывать = Истина;
Движения.Взаиморасчеты.Записывать = Истина;
// Блокировка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Счета");
ЭлементБлокировки.УстановитьЗначение("Счет", Счет);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
 
Запрос = Новый("Запрос");
Запрос.Текст ="ВЫБРАТЬ
              |СчетаОстатки.СуммаОстаток КАК Долг
              |ИЗ
              |РегистрНакопления.Счета.Остатки(&ТочкаИтогов, Счет = &Счет) КАК СчетаОстатки";
Запрос.УстановитьПараметр("Счет",Счет);
ТочкаИтогов = ?(РежимПроведения= РежимПроведенияДокумента.Оперативный, Неопределено, Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("ТочкаИтогов",ТочкаИтогов);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда 
Выборка = Результат.Выбрать();
Выборка.Следующий();
Если Выборка.Долг < СуммаПоДокументу Тогда
Отказ = Истина;
Сообщение = Новый("СообщениеПользователю");
Сообщение.Текст = "Сумма документа превышает сумму долга "+ Выборка.Долг;
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
 
Если Не Отказ Тогда
Движение = Движения.Счета.ДобавитьРасход();
Движение.Период = Дата;
Движение.Счет = Счет;
Движение.Сумма = СуммаПоДокументу;
 
Движение = Движения.Взаиморасчеты.ДобавитьПриход();
Движение.Период = Дата;
Движение.Счет = Счет;
Движение.Сумма = СуммаПоДокументу;
Движение.Контрагент = Контрагент;
КонецЕсли;
КонецПроцедуры
Показать

Вот тут правильнее было бы использовать новую методику проведения, сначала пишем потом читаем. За это тоже снимут баллы
unichkin; +1 Ответить
6. Betis 26 13.03.15 08:46 Сейчас в теме
(2) slazzy,
1) На самом деле для этого понадобится 1 строчка

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Отказ = НЕ ЗначениеЗаполнено(Параметры.Основание);
КонецПроцедуры


1) вместо 2 процедур одна строчка? это вы загнули.
Реквизиты накладной заполнить то надо как-то.

предлагаете вместо моих 3 строчек
Если Не ЗначениеЗаполнено(Объект.Счет) Тогда
Отказ = Истина;
КонецЕсли;

одну
Отказ = НЕ ЗначениеЗаполнено(Параметры.Основание);
КонецПроцедуры
сокращение строк кода это конечно хорошо, но надеюсь за это баллы не снимают.

2) Кстати за такой синтаксис отрубают руки
Запрос = Новый("Запрос");

Я в шоке, надеюсь сможете обосновать (если конечно это была не шутка)
3) Здесь согласен, упустил этот момент, спасибо!
7. slazzy 42 13.03.15 09:36 Сейчас в теме
(6)
Я в шоке, надеюсь сможете обосновать (если конечно это была не шутка)

Нет, не шутка. Подобное создание объектов запрещено. Это относится и ко всем остальным объектам в Вашем коде.
http://its.1c.ru/db/v8std#content:2149184100:hdoc

Реквизиты накладной заполнить то надо как-то.

Ну значит 2 строчки ) всё равно у вас это сделано довольно странно. К примеру, Вы в ОбработкаЗаполнения выставляете Отказ = Истина, но зачем? В этой процедуре нет Отказа вообще.

сокращение строк кода это конечно хорошо, но надеюсь за это баллы не снимают.

С чего бы?
8. Betis 26 13.03.15 09:53 Сейчас в теме
(7) slazzy,
1) К сожалению у меня доступа к ИТС, может как-то страничку скинете?
2) Верно подмечено, отказа в обработке заполнения нету, зря я его сунул туда)
3)С чего бы? Просто не слышал об этом, на экзамене дай боже сделать как удобно, думаю времени на анализ того как сократить код не останется.
10. slazzy 42 13.03.15 10:55 Сейчас в теме
(8) у меня эта ссылка работает и без доступа )
но я скопирую текст оттуда

Для программного создания прикладных объектов следует использовать методы соответствующих менеджеров (СоздатьЭлемент, СоздатьДокумент, СоздатьНаборЗаписей и т.д.).

Для программного создания прикладных объектов, у которых существует соответствующие менеджеры объектов, использование конструктора (оператор встроенного языка Новый) запрещается.

Правильно:
ДокументПриходная = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();

Неправильно:
ДокументПриходная = Новый("ДокументОбъект.ПоступлениеТоваровУслуг");


Конкретно эта цитата относится только к объектам, но в общем случае запрещается создавать что-то если вы изначально знаете тип и существует конструктор.
То есть если можно написать Новый Запрос, то писать Новый("Запрос") запрещено.
Подразумеваю, что это привычка из семерки
11. Betis 26 13.03.15 11:12 Сейчас в теме
(10) slazzy, Я думаю Вы сделали неправильные выводы. Как Вы и сами верно выразились "Конкретно эта цитата относится только к объектам", а остальное Вы от себя додумали. Лично я впервые такой метод конструктора увидел в материалах Евгения Гилева, надо будет его тоже предупредить)
15. slazzy 42 13.03.15 13:20 Сейчас в теме
(11)
внимательнее читайте сообщения :) в курсах Гилева данный метод создания объектов используется при динамическом создании объекта, тип которого изначально не известен, в 99.99% случаях это не так и всё известно заранее. Вам нужен запрос, вы делаете запрос.
Найдите в любой типовой 1С конфигурации, где бы они создавали запрос как Вы.

Во всяком случае моя "неправильная" обработка заполнения у меня работает без ошибок. Тестил 2 варианта ввод на основании - тогда ДанныеЗаполнения= Документ.Cчет и при интерактивном вводе - тогда ДанныеЗаполнения=Неопределено. В процедуре обрабатывается каждый из варинтов , иных вариантов обнаружить не удалось.

На самом деле если в динамическом списке установлен отбор, то ДанныеЗаполнения будут Структура и туда передадутся данные, которые установлены в отборе. Поэтому vasyak319 сделал абсолютно верное замечание. Если у Вас что-то работает, это не значит, что это будет работать всегда :)


и если кто-то где-то написал Сообщение = Новый("СообщениеПользователю") то вовсе не значит, что надо так делать. Так делать не надо :)
vasyak319; +1 Ответить
16. Betis 26 13.03.15 13:40 Сейчас в теме
(15) slazzy, Во-первых спасибо Вам за Ваш труд)
а в остальном Вы меня не убедили, мне удобнее использовать конструктор Новый("СообщениеПользователю") и пока я не увижу информации из более авторитетных источников (не в обиду конечно)), я буду использовать этот способ.
Насчет замечания vasyak319, я же пишу типовое решение, а решаю конкретную задачу и у меня нет динамических списков, ввод на основании возможен только на основании документа "счета". Но тут еще соглашусь, следующий раз сделаю по-другому, чтобы не подвергаться обструкции)
17. slazzy 42 13.03.15 14:02 Сейчас в теме
(16)
а в остальном Вы меня не убедили, мне удобнее использовать конструктор Новый("СообщениеПользователю") и пока я не увижу информации из более авторитетных источников (не в обиду конечно)), я буду использовать этот способ.

то есть 100% типовых конфигураций это не авторитетный источник?
Есть ещё такая штука как читаемость и однотипность кода. Писать надо не так, как удобно, а так, как принято...Я разрабатываю типовые конфигурации(не в фирме 1С) и если я напишу подобный конструктор меня вероятно выгонят ))


Насчет замечания vasyak319, я же пишу типовое решение, а решаю конкретную задачу и у меня нет динамических списков, ввод на основании возможен только на основании документа "счета". Но тут еще соглашусь, следующий раз сделаю по-другому, чтобы не подвергаться обструкции)

Вы можете создавать документ на основании из списка Счетов. Список счетов это динамический список и если в этом списке кто-то установит отбор, то Ваш код перестанет работать.
18. Betis 26 13.03.15 14:13 Сейчас в теме
(17) slazzy, Вы можете создавать документ на основании из списка Счетов. Список счетов это динамический список и если в этом списке кто-то установит отбор, то Ваш код перестанет работать

Установил отбор, выбрал сразу несколько документов из списка - ничего не сломалось, ДанныеЗаполнения = первый документ типа счет из списка счетов. Ну да ладно, все равно больше так не буду.

Кстати, написал письмо в УЦ №1 по-поводу конструктора Новый. Если ответят дам знать.
19. slazzy 42 13.03.15 14:35 Сейчас в теме
(18)
точнее я слегка перепутал. Попробуйте установить отбор в списке договоров и создать договор из этого списка.

Кстати, написал письмо в УЦ №1 по-поводу конструктора Новый. Если ответят дам знать.

До чего ж упёртые бывают люди ))
21. Betis 26 13.03.15 15:18 Сейчас в теме
(19) slazzy, договоров нет, что Вы имеете в виду под договорами?
23. slazzy 42 13.03.15 15:36 Сейчас в теме
(21) я просто туплю, извините :)) по работе договор делаю
я имел в виду попробуйте в списке Расходная сделать отбор и создать документ Расходная
24. Betis 26 13.03.15 15:57 Сейчас в теме
(23) slazzy, Все понял наконец-то, получилось сломать). Как Вы все успеваете и договора делать и меня подтягивать?)
25. TODD22 18 20.03.15 19:04 Сейчас в теме
(16)
а в остальном Вы меня не убедили, мне удобнее использовать конструктор Новый("СообщениеПользователю") и пока я не увижу информации из более авторитетных источников (не в обиду конечно)), я буду использовать этот способ.


И в чём удобство?

Если набрать "Сообщ" без кавычек и нажать ctrl+q сработает автоподстановка шаблона "СообщениеПользователю".
Посмотрите как там создаётся объект.

3. spetzpozh 13.03.15 08:26 Сейчас в теме
Задач в сборнике сколько, штук 140 всех вместе? Держите нас в курсе :))
Betis; dmpas; +2 Ответить
5. Betis 26 13.03.15 08:37 Сейчас в теме
(3) spetzpozh, буду стараться)
Оставьте свое сообщение