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

14.03.15

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

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

Скачать исходный код

Наименование Файл Версия Размер
Z1_26.dt
.dt 184,20Kb
7
.dt 184,20Kb 7 Скачать


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

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С OnLine. Интерактивная обучающая программа.

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

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

1800 руб.

11.02.2014    74043    678    13    

166

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

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

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

1800 руб.

06.07.2015    70955    118    9    

128

Экзамен "1С:Специалист-консультант" по внедрению подсистем управленческого учета в 1С:ERP. Полные и правильные решения билетов

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

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

10 стартмани

08.04.2024    820    7    user1988637    0    

8

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

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

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

18.03.2024    2074    AlOkt    4    

6

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

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

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

14.03.2024    10830    PROSTO-1C    46    

82

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

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

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

04.02.2024    6026    shuhratsj    16    

74

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

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

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

29.01.2024    13644    shuhratsj    102    

154

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

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

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

5 стартмани

01.12.2023    1468    18    Ocherkcons    0    

6
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. GROOVY 2506 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 18 17.03.15 17:40 Сейчас в теме
3) Пользуясь случаем хотел бы задать Вам вопрос насчет использования конструктора Новый("") (Не для объектов) .
Например Запрос = Новый("Запрос"), Сообщение = Новый("СообщениеПользователю"), Структура = Новый("Структура") и тд. Можно ли так делать? Есть ли какая-то проблема?

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

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

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

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