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

14.03.15

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Z1_26.dt
.dt 184,20Kb
8
8 Скачать (1 SM) Купить за 1 850 руб.


За основу взял решение предыдущей задачи. Основное отличие - появились пени.  Поэтому и в регистр "Взаиморасчеты" необходимо добавить второй ресурс "Пени".
В документах потребуются косметические изменения.

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


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

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

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


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

 
 
 

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


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

 
 
7) Отчет "Анализ состояния счетов"

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


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

РАБОТА НАД ОШИБКАМИ:


1) Документ "Расходная накладная"

Движения.Счета.Записывать = Истина;
Движения.Счета.Очистить();

// Согласно новой методике проведения сначала делаем движения, затем проверку не ушли ли в минус
Движение = Движения.Счета.ДобавитьРасход();
Движение.Период = Дата;
Движение.Счет = Счет;
Движение.Сумма = СуммаПоДокументу;

//блокировка
Движения.Счета.БлокироватьДляИзменения = Истина;
Движения.Записать();

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

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

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

// Если не случился отказ
Движения.Взаиморасчеты.Записывать = Истина;
Движение = Движения.Взаиморасчеты.ДобавитьПриход();
Движение.Период = Дата;
Движение.Счет = Счет;
Движение.Сумма = СуммаПоДокументу;
Движение.Контрагент = Контрагент;

1) Документ "Приход денег"

Движения.Взаиморасчеты.Записывать = Истина;

Движения.Взаиморасчеты.Очистить();
Движения.Записать();

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

// В первоначальном варианте упустил добавить параметр на счета из таб. части.

ЭлементБлокировки.ИспользоватьИзИсточникаДанных(СписокСчетов);

ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Счет","Счет");

ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();

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

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

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

КонецЦикла;


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

КонецЕсли;

КонецПроцедуры


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

Движения.Взаиморасчеты.Записывать = Истина;
Движения.Взаиморасчеты.Очистить();
Движения.Записать();

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

Подозреваю, что делаю что-то не так, вот так лихо блокируя целиком 2 регистра, но не могу понять, как здесь можно задать параметры в блокировке.

 

См. также

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

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

1800 руб.

11.02.2014    76987    95    15    

189

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

Меня зовут Татьяна, в 1С-разработке я уже семь лет, а в этом году официально стала junior-специалистом. Рассказываю, как всё происходило.

10.09.2024    7111    PROSTO-1C    21    

13

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

Я Олег, разработчик 1С. Расскажу, как сдавал на сертификат Специалиста, в чём ошибся и что стоит учесть.

11.06.2024    14078    PROSTO-1C    51    

66

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

Хочу поделиться своей историей планирования обучения, подготовки к экзамену и сдачи непосредственно экзамена. Надеюсь, что это будет полезно и откинет все вопросы об экзамене.

04.06.2024    9312    anton99    50    

57

Подготовка к аттестации Стажер Конфигурации 1cv8 Фармацевтика, аптеки Россия Управленческий учет Бесплатно (free)

Краткий рассказ о выборе 1С как основного языка программирования для дипломной работы в университете, и само приложение к диплому.

28.05.2024    4337    DmitryOneBit    20    

20

Подготовка к аттестации Программист Стажер Платформа 1С v8.3 Россия Абонемент ($m)

В публикации предоставлено решения 7 билетов из сборника 2022 года . Решения выполнены по пунктам и подробно, каждый БП описан и решен по условиям задач. Благодаря данному решению к экзамену стало подготовиться проще, чем когда-либо.

10 стартмани

07.05.2024    8371    83    user1988637    16    

42

Подготовка к аттестации Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

В публикации представлены только решения тех заданий, который попадаются на экзамене 1С:СК управленческого учета ERP. Благодаря данным решениям к экзамену стало подготовиться проще, чем когда-либо.

10 стартмани

08.04.2024    2970    39    user1988637    4    

15

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

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

14.03.2024    18102    PROSTO-1C    47    

90
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. GROOVY 2510 14.03.15 14:36 Сейчас в теме
Блокировки установлены некорректно. Не продемонстрирована технология оперативного проведения. -2 балла.
spetzpozh; +1 Ответить
2. Betis 26 16.03.15 20:29 Сейчас в теме
(1) GROOVY, Здравствуйте, Павел!
Спасибо за внимание. Если Вас не затруднит, гляньте небольшую работу над ошибками.(добавил в конце статьи):
1) Изменил обработку проведения накладной по мотивам Вашей статьи о новой методике оперативного проведения
2) В "приходе денег" изменил блокировку
3) Пользуясь случаем хотел бы задать Вам вопрос насчет использования конструктора Новый("") (Не для объектов) .
Например Запрос = Новый("Запрос"), Сообщение = Новый("СообщениеПользователю"), Структура = Новый("Структура") и тд. Можно ли так делать? Есть ли какая-то проблема?
6. slazzy 42 18.03.15 12:49 Сейчас в теме
(2), ну снова Вы за своё
3) Пользуясь случаем хотел бы задать Вам вопрос насчет использования конструктора Новый("") (Не для объектов) .
Например Запрос = Новый("Запрос"), Сообщение = Новый("СообщениеПользователю"), Структура = Новый("Структура") и тд. Можно ли так делать? Есть ли какая-то проблема?


я уже отвечал на вопрос. Физически так можно делать. Нужно ли так делать? Нет, не нужно. Так НИКТО не делает. Если можно штаны одеть через голову, то это вовсе не призыв их одевать через голову.
Есть стандарты разработки, есть соглашения о коде, есть просто "тут так принято". Так вот "тут не принято" делать так и в маломальски серьезных фирмах за это бьют по рукам. Не надо показывать характер и пытаться доказать, что мол если не написано "так нельзя", то я буду делать.
7. Bukaska 140 18.03.15 14:00 Сейчас в теме
(6) slazzy, Бесполезняк.. неужели на форуме Чистова не пообщаться по данной тематике? Зачем создавать публикашку с кучей косяков? Я понимаю, человек сдал и выложил вариант, как правильно сдавать, а не так, что я не понимая, не сдавал, помогите сдать...
Merkalov; +1 Ответить
3. TODD22 19 17.03.15 17:40 Сейчас в теме
3) Пользуясь случаем хотел бы задать Вам вопрос насчет использования конструктора Новый("") (Не для объектов) .
Например Запрос = Новый("Запрос"), Сообщение = Новый("СообщениеПользователю"), Структура = Новый("Структура") и тд. Можно ли так делать? Есть ли какая-то проблема?

А разве "Запрос", "СообщениеПользователю", "Структура" это не объекты?

Как мне кажется проблемы в создании объектов нет. Если они создаются через конструктор.
Есть проблема множественного создания объектов. Когда то давно меня из за этого не взяли на работу :(

И кстати вот недавно решал в двух организациях билеты на спеца по опер учёту на собеседование. Из за новой методики проведения а именно из за того что я одним запросом проверял остатки и если их хватало делал второй запрос уже к регистру партий моё решение не защитали. Сказали что не надо делать два запроса к базе. Типа можно было проверить хватает остатков или нет простым запросом к регистру партий. А это типа быдлокод :(
4. Betis 26 17.03.15 19:55 Сейчас в теме
(3) TODD22, Я имел в виду конструктор создания именно для НЕ прикладных объектов.
По-поводу случая на собеседовании, то чего только не бывает на собесах. насчет партионного списания, по-моему Вы сделали правильно, по-крайней мере Чистов рекомендует именно так делать, но видимо там были спецы круче)
5. TODD22 19 18.03.15 06:19 Сейчас в теме
По-поводу случая на собеседовании, то чего только не бывает на собесах. насчет партионного списания, по-моему Вы сделали правильно, по-крайней мере Чистов рекомендует именно так делать, но видимо там были спецы круче)

Ага... чего только не бывает. В одну контору как то пришёл года два назад устраиваться. Мне дают задачу на спеца как тестовое задание. Я спросил у человека а он сам может решить эту задачу, он сказал что нет :)
8. user1440342 22.07.20 15:10 Сейчас в теме
Мне эту задачку дали для написания Тз по 1 с и для веб
Кто может помочь...?
9. Andrey_Lyamkin 16 23.09.20 06:08 Сейчас в теме
Вы конфигурацию запускали? Пробовали документы создавать?
При проведении постоянно какие-то ошибки.
Стыдно выкладывать нерабочий код
Оставьте свое сообщение