Решение задач при подготовке на Специалиста по платформе по 1С:8.3

17.08.16

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

Практические занятия. Решение задач из сборника задач при подготовке к сертификату Специалист по Платформе 1С 8.3.

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

Наименование Файл Версия Размер
Архив решений
.rar 13,87Mb
159
.rar 13,87Mb 159 Скачать

Пока готовился на спеца по платформе мной были решены многие задачи из сборника. Выкладываю свои решения по решению:

  1. Оперативных задач (23 задачи: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 15, 17, 24, 26, 28, 31, 32, 36, 37, 40, 42, 45).
  2. Бухгалтерских задач (21 задача: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 14, 15, 18, 23, 27, 29, 31, 32, 33, 35)
  3. Расчетных задач (24 задачи: 01, 02, 03, 04, 05, 06, 07, 09, 12, 13, 15, 17, 16, 17, 18, 19, 20, 21, 22, 23, 27, 35, 43, 45, 48)
  4. Бизнес задачи присутствуют.

Может, кому пригодится при подготовке в качестве учебного материала. Текстовки задач в архиве отсутсвуют, дабы не нарушать соглашение.

PS: После прорешивания сдал с первого раза.

Пример решения Задачи по Бухгалтерии:

Необходимо реализовать возможность ведения учета товаров в разрезе организаций, мест хранения и партий товаров. Подразумевается, что для каждой организации баланс будет формировать отдельно (каждая организация это отдельное юридическое лицо). Склады у организаций «общие» (привязки склада к конкретной организации нет, но товар может принадлежать только одной организации). Под партией товара понимается документ, регистрирующий его поступление.

Документ «Приходная накладная» реализует следующую проводку: Дт «Товары» - Km «Поставщики» на количество и сумму закупаемого товара.

В системе необходимо реализовать документ, который осуществлял бы перемещение товара между собственными организациями (с возможным изменением склада компании). Фактически подобное перемещение будет регистрировать сразу две операции: продажа товара поставщиком покупателю и покупка покупателем товара у поставщика. Регистрация этих операций будет осуществляться документом «КупляПродажа». В шапке документа (при его заполнении) указывается организация-покупатель, организация-поставщик, склад организации-покупателя и склад организации-поставщика.

Документ «КупляПродажа» реализует следующие проводки:

По организации-поставщику:

Дт «Прибыли и убытки» - Km «Товары» на количество сумму себестоимости. Себестоимость товара рассчитывается для каждой организации в разрезе партий и складов по каждой номенклатурной позиции.

Дт «Покупатели» - Km «Прибыли и убытки» на сумму в продажных ценах;

По организаиии-пуодавцу: Дт «Товары» - Km «Поставщики» на сумму закупаемого товара

Решение:

Не буду расписывать создание объектов. Сразу к делу.

Документ "Приходная накладная" модуль объекта:

Процедура ОбработкаПроведения(Отказ, Режим)
    //Блокировки накладывать смысла нет, тут только увеличиваем остатки.
    // регистр Проводки
    Движения.Проводки.Записывать = Истина;
    Движения.Проводки.Очистить();
    Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
        Движение = Движения.Проводки.Добавить();
        Движение.СчетДт = ПланыСчетов.Управленческий.Товары;
        Движение.СчетКт = ПланыСчетов.Управленческий.Поставщики;
        Движение.Период = Дата;
        Движение.Организация = Организация;
        Движение.КоличествоДт = ТекСтрокаСписокНоменклатуры.Количество;
        Движение.Сумма = ТекСтрокаСписокНоменклатуры.Сумма;
        Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ТекСтрокаСписокНоменклатуры.Номенклатура;
        Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Склад] = Склад;
        Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Партия] = Ссылка;
    КонецЦикла;
КонецПроцедуры

Документ "Купля продажа" модуль объекта:

Процедура ОбработкаПроведения(Отказ, Режим)
    
    //Накладываю блокировки
    // Без них можно даже не идти на экзамен
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Проводки");
    ЭлементБлокировки.УстановитьЗначение("Организация", Поставщик);
    ЭлементБлокировки.УстановитьЗначение("Счет", ПланыСчетов.Управленческий.Товары);
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    Блокировка.Заблокировать();    
    
    // регистр Проводки
    //Ставлю признак, что бы платформа сама записала движения в регистр
    Движения.Проводки.Записывать = Истина;
    
    //Делаю по старинке - сначала формирую остатки, потом делаю движения.
    //Т.к. имеется условное проведение и в добавок присутствуют партии товаров.
    
    //Запрос по остаткам в регистре бухгалтерии
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КупляПродажаСписокНоменклатуры.Номенклатура КАК Номенклатура,
        |    Минимум(КупляПродажаСписокНоменклатуры.НомерСтроки) КАК НС,
        |    СУММА(КупляПродажаСписокНоменклатуры.Количество) КАК КолДок,
        |    СУММА(КупляПродажаСписокНоменклатуры.Сумма) КАК СумДок
        |ПОМЕСТИТЬ Товары
        |ИЗ
        |    Документ.КупляПродажа.СписокНоменклатуры КАК КупляПродажаСписокНоменклатуры
        |ГДЕ
        |    КупляПродажаСписокНоменклатуры.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    КупляПродажаСписокНоменклатуры.Номенклатура
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Номенклатура
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Товары.Номенклатура КАК Номенклатура,
        |    Товары.НС КАК НС,
        |    Товары.КолДок КАК КолДок,
        |    Товары.СумДок КАК СумДок,
        |    ПроводкиОстатки.Субконто3 КАК Партия,
        |    ЕСТЬNULL(ПроводкиОстатки.КоличествоОстаток, 0) КАК КолОст,
        |    ЕСТЬNULL(ПроводкиОстатки.СуммаОстаток, 0) КАК СумОст
        |ИЗ
        |    Товары КАК Товары
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Проводки.Остатки(
        |                &МоментВремени,
        |                Счет = &СчетТовары,
        |                &МассивСубконто,
        |                Организация = &Организация
        |                    И Субконто2 = &СкладПоставщика
        |                    И Субконто1 В
        |                        (ВЫБРАТЬ
        |                            Товары.Номенклатура
        |                        ИЗ
        |                            Товары КАК Товары)) КАК ПроводкиОстатки
        |        ПО Товары.Номенклатура = ПроводкиОстатки.Субконто1
        |
        |УПОРЯДОЧИТЬ ПО
        |    ПроводкиОстатки.Субконто3.МоментВремени
        |ИТОГИ
        |    МАКСИМУМ(НС),
        |    МАКСИМУМ(КолДок),
        |    МАКСИМУМ(СумДок),
        |    СУММА(КолОст)
        |ПО
        |    Номенклатура";

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

    Результат = Запрос.Выполнить();

    //Обхожу по группировкам
    // и создаю наборы движений
    ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    СуммаПродажи = 0;
    Пока ВыборкаНоменклатура.Следующий() Цикл
        
        Если ВыборкаНоменклатура.КолОст < ВыборкаНоменклатура.КолДок Тогда
            Отказ = Истина;
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Недостаточно товара: " + ВыборкаНоменклатура.Номенклатура + " на складе " + СкладПоставщика + ". В наличии  " + ВыборкаНоменклатура.КолОст + " ед.";
            Сообщение.Поле = "СписокНоменклатуры[" + (ВыборкаНоменклатура.НС - 1) + "].Количество";
            Сообщение.УстановитьДанные(ЭтотОбъект);
            Сообщение.Сообщить();
        КонецЕсли;
        
        Если Отказ Тогда
            Продолжить;
        КонецЕсли;
        
        Выборка = ВыборкаНоменклатура.Выбрать();

        СписатьВсего = ВыборкаНоменклатура.КолДок;
        
        Пока Выборка.Следующий() И СписатьВсего > 0 Цикл
            Списать = Мин(СписатьВсего, Выборка.КолОст);
            Если Списать = Выборка.КолОст Тогда
                Себестоимость = Выборка.СумОст;
            Иначе
                Себестоимость = Списать * Выборка.СумОст / Выборка.КолОст;
            КонецЕсли;
            
            Движение = Движения.Проводки.Добавить();
            Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
            Движение.СчетКт = ПланыСчетов.Управленческий.Товары;
            Движение.Период = Дата;
            Движение.Организация = Поставщик;
            Движение.КоличествоКт = Списать;
            Движение.Сумма = Себестоимость;
            Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Покупатель] = Покупатель;
            Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура;
            Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Склад] = СкладПоставщика;
            Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Партия] = Выборка.Партия;
            
            СписатьВсего = СписатьВсего - Списать;
        КонецЦикла;
        
        Движение = Движения.Проводки.Добавить();
        Движение.СчетДт = ПланыСчетов.Управленческий.Товары;
        Движение.СчетКт = ПланыСчетов.Управленческий.Поставщики;
        Движение.Период = Дата;
        Движение.Организация = Покупатель;
        Движение.КоличествоДт = ВыборкаНоменклатура.КолДок;
        Движение.Сумма = ВыборкаНоменклатура.СумДок;
        Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаНоменклатура.Номенклатура;
        Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Склад] = СкладПокупателя;
        Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Партия] = Ссылка;
        
        СуммаПродажи = СуммаПродажи + ВыборкаНоменклатура.СумДок;
    КонецЦикла;
    
    Если Не Отказ Тогда
        Движение = Движения.Проводки.Добавить();
        Движение.СчетДт = ПланыСчетов.Управленческий.Покупатели;
        Движение.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки;
        Движение.Период = Дата;
        Движение.Организация = Поставщик;
        Движение.Сумма = СуммаПродажи;
        Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Покупатель] = Покупатель;
        Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Покупатель] = Покупатель;
    КонецЕсли;
КонецПроцедуры

1С Обучение 1С сертификация 1С специалист по платформе 1С решения задач

См. также

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

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

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

1800 руб.

11.02.2014    73832    677    13    

165

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

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

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

1800 руб.

06.07.2015    70796    118    9    

128

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

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

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

18.03.2024    1019    AlOkt    4    

6

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

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

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

14.03.2024    9343    PROSTO-1C    45    

77

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

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

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

04.02.2024    5616    shuhratsj    16    

71

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

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

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

29.01.2024    12990    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    1314    16    Ocherkcons    0    

6

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

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

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

17.11.2023    2345    Ocherkcons    0    

6
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 24.08.16 07:48
Сообщение было скрыто модератором.
...
2. chilyagin 91 27.08.16 12:23 Сейчас в теме
В *.dt по задачам бизнес-процессах ваш вариант кода не отработает корректно, если в конфигураторе в список пользователей будет добавлен имя пользователя, имени которого не добавлено в справочник ФЛ.
Ваш код


Правильнее оформить условие вот так:
	Если ТекПол.Пустая()Тогда
		ТекПол = Справочники.ФизическиеЛица.СоздатьЭлемент();
		ТекПол.Наименование = ИмяПользователя();
		ТекПол.Записать();
	КонецЕсли;
3. BraunAlex 136 06.09.16 12:15 Сейчас в теме
(2) chilyagin,
Однако, отрабатывало корректно на 100%. И именно такой код дают при подготовке на спеца и при решении сквозной задачи.
К тому же читаем справку:
СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>)
НайтиПоНаименованию (FindByDescription)

НайтиПоНаименованию(<Наименование>, <ТочноеСоответствие>, <Родитель>, <Владелец>)

Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>; Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено.


СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
Пустая (IsEmpty)

Возвращаемое значение:
Тип: Булево.
Истина - ссылка не указывает ни на какой объект (пустая ссылка); Ложь - в противном случае.


Ваш код в данном контексте будет ошибочным, т.к. поиск производится по точному совпадению и ссылки справочника не существует, т.е. Неопределено.
4. white-mount 06.09.16 12:24 Сейчас в теме
(3)
Однако, отрабатывало корректно на 100%.

И сколько человек получили сертификат "специалист" по платформе или бухучёту с этим кодом?
5. BraunAlex 136 06.09.16 12:33 Сейчас в теме
(4) white-mount, Не умничай. Проверил - да, действительно. Не задавался целью ставить под сомнение подготовительные курсы.
6. cmd_vasec 34 13.02.17 11:18 Сейчас в теме
Вопросы:
1. Почему вы используете определение режима проведения - на экзамене это ошибка или нет?
2. При выводе нехватки товара вы выводите ссылку номенклатура (неявное обращение к базе), а надо представление. Или я ошибаюсь?
7. BraunAlex 136 13.02.17 14:54 Сейчас в теме
(6) 1. Лучше использовать определение режима. В некоторых задачах будет считаться ошибкой/недочетом неумение пользоваться этим свойством/методом. С другой стороны Вы теряете время на написание кода.
2. Используйте представление. Но и использование ссылок не будет ошибкой/недочетом, т.к. перед нами не стоит задачи по оптимизации кода.
8. cmd_vasec 34 13.02.17 17:00 Сейчас в теме
(7) 1. Приведите, пожалуйста пример.
2. А не будет ли это запрос в цикле?
9. BraunAlex 136 13.02.17 20:29 Сейчас в теме
(8) 1. Смотрите в примерах и задачи в сборнике задач. Я сейчас не вспомню. Давно подготовку проходил.
2. Что именно? К использованию ссылок внутри конструкций цикла по выборке не придираются. Или мне повезло :) Вы же не на эксперта идете сдавать. Или...?
10. Hans 2 29.08.17 15:43 Сейчас в теме
Загрузил первую задачу по ОУ, пересчеты суммы строки, пересчет суммы документа при изменении табличных частей не нужно что ли делать?
11. BraunAlex 136 29.08.17 19:56 Сейчас в теме
(10) На сколько помню, в постановке задачи такого условия не было (ни в одной). Зачем придумывать дополнительную работу, тем более что время жестко ограничено?
12. DarkUser 16.05.18 10:45 Сейчас в теме
Спасибо за решения. Сейчас как раз готовлюсь и так же решаю задачи по сборнику. Хорошо когда можно сравнить свой код с решениями других программистов.
Оставьте свое сообщение