15 мая 2017 г.

Получение данных из нескольких источников недопустимо

Есть ограничения в платформе 1С:Підприємство 8.3 (8.3.10.2168), ну и ниже версий.

Нельзя использовать одновременно соединение таблиц базы данных (например таблицы регистра) и данные из ВнешнеИсточникиДанных в запросах.

Обойти это ограничение возможно сначала обратиться к ВнешниеИсточникиДанных с помощью запроса, а результат запроса выгрузить в таблицу значений.

Далее сделать еще один запрос и в качестве источника данных выбрать ранее выгруженную таблицу значений.
А далее в этом запросе готовую таблицу значений соединяем с нашими данными из базы 1С (например, регистром сведений).

У меня данный пример реализован в функции ПолучитьТЗ()

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

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

22 апр. 2017 г.

Изменить стандартный сигнал 1С

Для сигнализирования события в 1С есть метод глобального контекста
Сигнал();
Но, что если нужно изменить мелодию звукового сигнала?! Для этого можно использовать внешние компоненты, например MSScriptControl.ScriptControl, а можно в изменить мелодию в звуковых настройках операционной системы



и после этого 1С будет воспроизводить тот звуковой сигнал, который будет установлен.

Компьютер не переходит в ждущий режим \ сон

Пуск - Выполнить - cmd 
powercfg.exe -requests
вывод команды был таким 
EXECUTION:
[PROCESS] \Device\HarddiskVolume6\Program Files (x86)\Google\Chrome\Application\chrome.exe Uploading data
теперь в командной строки выполняю по очереди
powercfg -requestsoverride PROCESS chrome.exe awaymode display system
powercfg -requestsoverride PROCESS chrome.exe awaymode display system execution
powercfg -requestsoverride PROCESS LockScreenContentServer.exe

21 апр. 2017 г.

Применить группировку \ сортировку для всех папок в проводнике

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

далее зайти в параметры проводника не закрывая папку, где настроена группировка или сортировка 

и нажать кнопку Применить к папкам + ок


Получить предпоследнюю цену номенклатуры

      Ничего лучшего чем
ВЫБРАТЬ ПЕРВЫЕ 2
 ЦеныНоменклатуры.Период КАК Период,
 ЦеныНоменклатуры.Цена
ПОМЕСТИТЬ ПоследняяПредпоследняя
ИЗ
 РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
 ЦеныНоменклатуры.Номенклатура = &Номенклатура
 И ЦеныНоменклатуры.ТипЦен = &ТипЦен
 И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры

УПОРЯДОЧИТЬ ПО
 Период УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
 ПоследняяПредпоследняя.Период КАК Период,
 ПоследняяПредпоследняя.Цена
ИЗ
 ПоследняяПредпоследняя КАК ПоследняяПредпоследняя

УПОРЯДОЧИТЬ ПО
 Период
не придумал, что бы получить предпоследнюю цену номенклатуры по определенному 
типу цен с определенной характеристикой

29 мар. 2017 г.

Задержка при смене раскладки клавиатуры

Windows 10 Version 10.0.15063.
При переключении языка ввода клавишами Ctrl+Пробел раскладка с задержкой переключается.

Нашел ветку
HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response
 Открыл параметр
DelayBeforeAcceptance
Изменил значение
с 1000 на 200 
Перезагрузил систему.


18 мар. 2017 г.

Не сохраняется цвет Форматированного документа 1С

Есть на форме поле с типом ФорматированныйДокумент.
На форму добавил Командную панель форматированного документа.
При форматировании в этом поле текста и дальнейшем  сохранении, все форматирования сохраняются кроме ЦветФона и ЦветТекста.


Не знаю точно, но скорее всего это баг платформы. Версия у меня 1С:Підприємство 8.3 (8.3.9.2033).

Добиться сохранения выше цветов удалось только при вставке в это поле форматированного текста, например скопировавшего с страницы веб браузера.

Сравнить значения выбора с типом Характеристики

Есть таблица на форме с колонками:


В пользовательском виде:


Настройка - имеет тип ПланВидовХарактеристикСсылка
Значение - имеет составной тип (СправочникСсылка, Булево, Строка, Дата, Число)

При выборе в таблицы Значения к определенной Настройке нужно делать проверку например:

  • Если выбрана Настройка "Порт SMTP" то значение должно быть только типа Число

Вышло вот что:
&НаКлиенте
Процедура НалаштуванняПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
 ПроверкаПравильностиВыбранногоЗначенияПоТипу(Элемент.ТекущиеДанные.Значення, Элемент.ТекущиеДанные.Налаштування);
КонецПроцедуры

&НаСервере
Процедура ПроверкаПравильностиВыбранногоЗначенияПоТипу(Значение,Настройка)
 Если Настройка = ПланыВидовХарактеристик.НаименованиеПВХ.ПортSMTP Тогда 
  Если Тип("Число") <> ТипЗнч(Значение) Тогда 
   Сообщить("В этом параметре нужно указать тип Число!")
  КонецЕсли;
 КонецЕсли;  
КонецПроцедуры
Сначала проверяем, выбранная ли настройка связанная с ПортSMTP, а далее проверяем,
введенное ли значение в этом поле типа Число.

Серверные вызовы при завершении работы запрещены

Нужно выполнять авто обмен с РИБ перед завершение работы системы, как это можно было делать и ранее.
Сейчас, как видно из ошибки выполнить действия, которые требуют серверную часть модуля нельзя. А как же выполнить обмен с РИБ перед закрытием платформы если без серверных методов не обойтись?!

Ничего лучшего кроме как

Процедура ПередЗавершениемРаботыСистемы(Отказ, ТекстПредупреждения)       
        Отказ = Истина;
        ТекстПредупреждения = "Нажмите Продолжить работу, что бы выполнить АвтоОбменРИБ";
     
        ПодключитьОбработчикОжидания("ВыполнитьОбмен",1,Истина);
КонецПроцедуры

Процедура ВыполнитьОбмен()Экспорт       
        Обмен.ВыполнитьОбменСоВсемаРИБ();
        ОтключитьОбработчикОжидания("ВыполнитьОбмен");   
КонецПроцедуры


не придумал. 
Тут все просто, перед завершением работы платформы, пользователю как бы намекаем, что "нажми продолжить". Если нажата кнопка "продолжить" то программа не завершиться, а передаст свое выполнение общему модулю с серверным контекстом где уже и осуществляется обмен со всеми РИБ.

16 мар. 2017 г.

DefaultAppPool stopped / остановлен

Установил IIS для дальнейшей публикации 1С Предприятия.

При переходе на главную страницу веб сервера http://localhost показывается ошибка, типа "Service Unavailabel Error code 503".

Смотрю в менеджер IIS в Application Pools, пул DefaultAppPool остановлен. При последующем запуске вручную DefaultAppPool он автоматически останавливается.

При поиске решений в интернете по IIS ошибках в Журнале событий Windows, результативного ничего не нашел.

Решение:
Зашел в Advanced Settings нашего Defaultapppool пула и установил параметр Identity на LocalService.
На всякий случай, перезапустил IIS + запустил вручную DefaultAppPool, который уже автоматически не останавливался.


Для успешной публикации базы 1С Предприятия, в моем случаи, параметр Identity был установлен в NetworkService

13 янв. 2017 г.

Скрыть общедоступную папку по сети

Открыли доступ в сеть к нескольким папкам и одну из папок хотим скрыть, что бы пользователь через Проводник не смог видеть?!

Для скрытия в конце имени папки нужно поставить знак $


т.е. берем пример с windows, которая по умолчанию скрывает некие папки для отображения в общедоступных папках в сети.
 

CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07