Процедура ПолучитьДокументыПоСтд()
СрокОплатыСравнение = 2;// 1 - Неважно 2 - Просрочен (более чем на)
СрокОтгрузкиСравнение = 1;// 1 - Неважно
НаличиеРезервов = 3;// 1 - Неважно 3 - С резервами
РазмещениеРезервов = 1; // 1 - На складах и в заказах
СостояниеОплаты = 2;// 1 - Неважно 2 - Не оплачен полностью (неоплачен либо оплачен частично)
СостояниеОтгрузки = 1; // 1 - Неважно
ДатаНач = НачалоДня(ЭтотОбъект.РекДатаНач);//начало периода отбора месяцназад
ДатаКон = КонецДня(ЭтотОбъект.РекДатаКон);//конец периода отбора месяцвперед
ПустаяДата=Дата('00010101');
ДатаОплаты=НачалоДня(ТекущаяДата());
ДатаОтгрузки=НачалоДня(ТекущаяДата());
ПричинаЗакрытияЗаказа = Справочники.ПричиныЗакрытияЗаказов.ПустаяСсылка();
//сообщить(""+ДатаНач+" "+ДатаКон+"");
вторник, 30 июня 2015 г.
1С получить список просроченных заказов
1С получить список учетных записей электронной почты по пользователю
//Отправитель - СправочникСсылка.Пользователи
//УчетнаяЗапись - Реквизит формы
//Подпись - - Реквизит формы
//Результат выполнения - последняя итерация цикла
Функция НайтиУЗЗапросом(Отправитель)
НайтиУчетнуюЗапись=Новый Запрос;
НайтиУчетнуюЗапись.Текст="ВЫБРАТЬ
| УчетныеЗаписиЭлектроннойПочты.Ссылка
|ИЗ
| Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
|ГДЕ
| УчетныеЗаписиЭлектроннойПочты.ДоступКУчетнойЗаписи.Пользователь = &Пользователь";
НайтиУчетнуюЗапись.УстановитьПараметр("Пользователь",Отправитель);
СписокУЗ=НайтиУчетнуюЗапись.Выполнить().Выбрать();
Если СписокУЗ.Количество()>0 Тогда
Сообщить(СписокУЗ.Количество());
Пока СписокУЗ.Следующий() Цикл
УчетнаяЗапись=СписокУЗ.Ссылка;
Подпись=СписокУЗ.Ссылка.ТекстПодписи;
КонецЦикла;
Иначе
Сообщить("УЗ не найдена!!!!")
КонецЕсли;
КонецФункции
//Вариант 1С, выдает УЗ по-умолчанию
УчетнаяЗаписьПользователя=УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(СсылкаНаПользователя, "ОсновнаяУчетнаяЗапись");
//Также в 1С есть функция возвращающая список доступных УЗ
//ОбщиеМодули.УправлениеЭлектроннойПочтой.ПолучитьДоступныеУчетныеЗаписи(ТекущийПользователь)
//Сами читаем, и пытаемся понять что оно делает
пятница, 26 июня 2015 г.
1С Вычесть рабочие дни на основе ПК (НеВЗапросе)
//Процедура возвращает массив рабочих дней за два месяца
Процедура ЗапросКалендаря()
ЗапросКалендаря=Новый Запрос;
ЗапросКалендаря.Текст="ВЫБРАТЬ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| РегламентированныйПроизводственныйКалендарь.Пятидневка = 1
| И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &НачалоПериода
| И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= &КонецПериода";
ЗапросКалендаря.УстановитьПараметр("НачалоПериода",ДобавитьМесяц(ТекущаяДата(),-1)); //НачалоПериода
ЗапросКалендаря.УстановитьПараметр("КонецПериода",ДобавитьМесяц(ТекущаяДата(),1)); //КонецПериода
Период=ЗапросКалендаря.Выполнить().Выбрать();
ДваМесяцаРабочихДней=Новый Массив;
Пока Период.Следующий() Цикл
ДваМесяцаРабочихДней.Добавить(Период.ДатаКалендаря);
КонецЦикла;
КонецПроцедуры
//Использование
Процедура ПолучитьТриДняНазад()
ОткатитьНазадНа=3;//3 дня
Сообщить(НачалоДня(ДваМесяцаРабочихДней[ДваМесяцаРабочихДней.Количество()-ОткатитьНазадНа-1]))
КонецПроцедуры
//Вариант самой 1С (нашел в форме отбора просроченных заказов)
Процедура ДниПросрочки()
ОткатитьНазадНа=3;//3 дня
//Пытаемся учитывать только рабочие дни по календарю
ПолучитьДаты = Новый Запрос;
ПолучитьДаты.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РегламентированныйПроизводственныйКалендарь.Год
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачГода И &КонГода";
ПолучитьДаты.УстановитьПараметр("НачГода",НачалоГода(ТекущаяДата()));
ПолучитьДаты.УстановитьПараметр("КонГода",КонецГода(ТекущаяДата()));
ПолучилиДаты = ПолучитьДаты.Выполнить();
Если ПолучилиДаты.Пустой() Тогда
ТребуемаяДатаОплаты=НачалоДня(ТекущаяДата()-24*60*60*ОткатитьНазадНа);
//ТребуемаяДатаОтгрузки=НачалоДня(ТекущаяДата()-24*60*60*ОткатитьНазадНа);
Иначе
ТребуемаяДатаОплаты=ЗаполнениеДокументов.ОпределитьДату(НачалоДня(ТекущаяДата()),-ОткатитьНазадНа);
//ТребуемаяДатаОтгрузки=ЗаполнениеДокументов.ОпределитьДату(НачалоДня(ТекущаяДата()),-ОткатитьНазадНа);
КонецЕсли;
Сообщить(ТребуемаяДатаОплаты);
КонецПроцедуры
//КалендарныеДни - функция, разберетесь сами
Функция ПолучитьДень(ИсходнаяДата, КоличествоПрибавляемыхДней)
Запрос = Новый Запрос("
|ВЫБРАТЬ
|ДОБАВИТЬКДАТЕ(&ИсходнаяДата, ДЕНЬ, &Количество) как Дата");
Запрос.УстановитьПараметр("ИсходнаяДата", ИсходнаяДата);
Запрос.УстановитьПараметр("Количество", КоличествоПрибавляемыхДней);
Возврат Запрос.Выполнить().Выгрузить()[0].Дата;
КонецФункции
1С интерактивно нажать кнопку на форме
//Для обычного приложения, работает только на открытой форме. Проверено на платформе 8.2, УТ 10.3
Процедура ИнтерактивноНажатьКнопку(Кнопка, ФормаКнопки) Экспорт
// Удостоверимся что есть права на нажатие
// Кнопка
стрОшибка = "";
Попытка
Если Кнопка.Видимость = Ложь Тогда
стрОшибка = стрОшибка + ", Невидима";
КонецЕсли;
Исключение
КонецПопытки;
Попытка
Если Кнопка.Доступность = Ложь Тогда
стрОшибка = стрОшибка + ", Недоступна";
КонецЕсли;
Исключение
КонецПопытки;
Если стрОшибка <> "" Тогда
стрОшибка = Сред(стрОшибка, 3)+" кнопка, которую требуется нажать";
ВызватьИсключение(стрОшибка);
КонецЕсли;
Если ТипЗнч(Кнопка) = Тип("КнопкаКоманднойПанели") Тогда
Действие = Кнопка.Действие;
ИначеЕсли ТипЗнч(Кнопка) = Тип("Кнопка") Тогда
Действие = Кнопка.ПолучитьДействие("Нажатие");
КонецЕсли;
буфДействие = ФормаКнопки.ПолучитьДействие("ПриПовторномОткрытии");
ФормаКнопки.УстановитьДействие("ПриПовторномОткрытии", Действие);
Попытка
// собственно вызов нажатия кнопки
ФормаКнопки.Открыть();
ФормаКнопки.УстановитьДействие("ПриПовторномОткрытии", буфДействие);
Исключение
ФормаКнопки.УстановитьДействие("ПриПовторномОткрытии", буфДействие);
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Процедура ОткрытьИЗапустить()
ЗакрытиеЗаказаДокумент=документы.ЗакрытиеЗаказовПокупателей.СоздатьДокумент();
ФормаДокумента=ЗакрытиеЗаказаДокумент.ПолучитьФорму("ФормаДокумента");
ФормаДокумента.Открыть();
ИнтерактивноНажатьКнопку(ФормаДокумента.ЭлементыФормы.КоманднаяПанельЗаказы.Кнопки.ПодменюЗаполнить.Кнопки.ДействиеЗаполнить,ФормаДокумента);
КонецПроцедуры
понедельник, 22 июня 2015 г.
Все об 1С: Как в 1с 8 Получить список подчиненных документов
Все об 1С: Как в 1с 8 Получить список подчиненных документов:
Функция ПолучитьСписокПодчиненныхДокументов(ДокументОснование) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СтруктураПодчиненности.Ссылка
|ИЗ
| КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СтруктураПодчиненности";
Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ДокументОснование);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
//Функция возвращает ТаблицуЗначений
//Обходим ее Для Каждого Из Цикл
понедельник, 15 июня 2015 г.
1С Из двух семерок одна распределенная восьмерка
Картинок не будет, мне лень ;-)
Есть:
Две базы "Бухгалтерский учет 4.5" (7.70.538) - одна для менеджера (заводит продажи), одна для бухгалтера (заводит продажи и покупки)
Задача:
- Сделать одну базу БП 2.0/3.0
- Перекинуть данные за I-II квартал.
- Сделать так, чтобы бухгалтер и менеджер могли работать с базой "одновременно" (физически они находятся в разных точках города).
воскресенье, 7 июня 2015 г.
Подписаться на:
Сообщения (Atom)